Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果某个属性为false,对象的角度过滤数组?_Javascript_Angularjs_Angularjs Ng Repeat_Angular Material_Angular Filters - Fatal编程技术网

Javascript 如果某个属性为false,对象的角度过滤数组?

Javascript 如果某个属性为false,对象的角度过滤数组?,javascript,angularjs,angularjs-ng-repeat,angular-material,angular-filters,Javascript,Angularjs,Angularjs Ng Repeat,Angular Material,Angular Filters,因此,我有一个重复的对象数组,工作得很好,但我想列出属性值为“true”的对象数组。我觉得内置的Angular过滤器应该足够了。但是它不能工作 这是我的尝试。基本上,我只需要禁用属性“true”的对象的asset.name、asset.status等 <md-virtual-repeat-container id="vertical-container" ng-show="$ctrl.infiniteAssets.getLength() > 0 && $ctrl.sw

因此,我有一个重复的对象数组,工作得很好,但我想列出属性值为“true”的对象数组。我觉得内置的Angular过滤器应该足够了。但是它不能工作

这是我的尝试。基本上,我只需要禁用属性“true”的对象的asset.name、asset.status等

<md-virtual-repeat-container id="vertical-container" ng-show="$ctrl.infiniteAssets.getLength() > 0 && $ctrl.switch">

      <md-list>
        <md-list-item  class="list-page" md-on-demand md-virtual-repeat="asset in $ctrl.infiniteAssets | assetsFilter:$ctrl.searchValue | filter:{disabled:true}:true" ng-click="$ctrl.loadDetail(asset)">
          <span class="search-status" style="border-left-color:{{asset.statusColor}};"></span>
          <p >{{asset.name}} </p>                  
          <label hide-xs ng-if="asset.disabled" class="ng-animate-disabled">
            <md-chips>
              <md-chip >{{'LABELS.DISABLED' | translate}}</md-chip>
            </md-chips>
          </label>
          <label ><i>{{asset.status || 'UNKNOWN'}}</i></label>
             <md-button  aria-label="Delete Asset" class="md-icon-button md-warn" layout-padding ng-click="$ctrl.deleteAsset(asset)">
                   <md-icon md-svg-icon="delete" class="modelTrashIcon"></md-icon>
              </md-button> 

          <md-divider></md-divider>
        </md-list-item>
      </md-list>
    </md-virtual-repeat-container>

{{asset.name}}

{{'LABELS.DISABLED'| translate}} {{asset.status | |'UNKNOWN'}
$onInit=()=>{
this.swtich=false;
this.hideToolbarTools=false;
this.searchOpen=false;
this.componentList=[];
this.alertCount=0;
这一点:加载=错误;
this.disableTitle=false;
this.searchValue=“”;
第一个=正确;
此参数。设置={
版式:对,
是的,
显示拼写建议:正确,
presentationMode:“编辑”
};
this.global=this.$rootScope;
此。$rootScope。$on('transform-toolbar-open',()=>{
//隐藏移动设备上的工具栏控件
如果(此.$mdMedia('xs')){
this.hideToolbarTools=true;
}否则{
this.hideToolbarTools=false
}
})
这是。$rootScope。$on('transform-toolbar-close',()=>{
//显示工具栏控件
this.hideToolbarTools=false;
})
这是loadAssets()
}
loadAssets=()=>{
var self=这个;
self.infiniteasets={
加载数量:0,
toLoad_u0:,
项目:[],
pageNum:1,
虚拟索引:0,
getItemAtIndex:函数(索引){
这个.virtualIndex=索引;
如果(索引>此.numloated_u41;{
此.fetchMoreItems(索引);
返回null;
}
返回此.items[索引];
},
//必需的。
getLength:函数(){
如果(this.virtualIndex>this.numLoaded){
返回此.numloated\ux;
}否则{
返回此.numloated+5;
}
},
fetchMoreItems:函数(索引){
if(this.toLoad<索引){
自加载=真;
此.toLoad+等于20;
self.siAsset.getAssets(this.pageNum++,20)
.then(angular.bind)(此,函数(资产){
//this.objLength=assets.length;
如果(!assets.statusCode){
this.items=this.items.concat(资产);
this.toLoad=this.items.length;
this.numLoaded u=this.toloaded;
}
自加载=错误;
}))
}
}
};
console.log('check',this.infiniteasets)

}
实际上,过滤器:{disabled:true}可以正常工作

如果它不起作用,我想你可以在你的脚本端过滤它们

var infiniteAssets = infiniteAssets.filter(i=>i.disabled == true);
或者使用角度滤波器

var infiniteAssets = $filter('filter')(infiniteAssets,{disabledled:true})

您可以尝试将ng if条件设置为低于ng重复

<md-virtual-repeat-container id="vertical-container" ng-show="$ctrl.infiniteAssets.getLength() > 0 && $ctrl.switch">

      <md-list>
        <md-list-item  class="list-page" md-on-demand md-virtual-repeat="asset in $ctrl.infiniteAssets ng-click="$ctrl.loadDetail(asset)">
         <div ng-if="asset.disabled">             
         <span class="search-status" style="border-left-color:{{asset.statusColor}};"></span>
          <p >{{asset.name}} </p>                  
          <label hide-xs ng-if="asset.disabled" class="ng-animate-disabled">
            <md-chips>
              <md-chip >{{'LABELS.DISABLED' | translate}}</md-chip>
            </md-chips>
          </label>
          <label ><i>{{asset.status || 'UNKNOWN'}}</i></label>
             <md-button  aria-label="Delete Asset" class="md-icon-button md-warn" layout-padding ng-click="$ctrl.deleteAsset(asset)">
                   <md-icon md-svg-icon="delete" class="modelTrashIcon"></md-icon>
              </md-button> 

          <md-divider></md-divider>
          </div>
        </md-list-item>
      </md-list>
    </md-virtual-repeat-container>


我决定为残疾人创建一个全新的函数,并使用javascript过滤器来实现这个功能

if(!asset.statusCode){
let disabled=asset.filter((a)=>{
返回a.disabled==true
})
this.items=this.items.concat(禁用);
this.toLoad=this.items.length;
this.numLoaded u=this.toloaded;

}
我将如何实现这一点?我试着说this.finite=this.$filter('filter')(infiniteasets,{disabledled:true}),然后是$ctrl.finite中的资产。不起作用。嘿,我以前试过这样做,把它们每个都放在ng if=asset.disabled中,并且像你的例子一样包装在一个div中。在这两个视图中,其他对象仍然存在,并且可以单击。只有文本是隐藏的,请参见。