Javascript 如果某个属性为false,对象的角度过滤数组?
因此,我有一个重复的对象数组,工作得很好,但我想列出属性值为“true”的对象数组。我觉得内置的Angular过滤器应该足够了。但是它不能工作 这是我的尝试。基本上,我只需要禁用属性“true”的对象的asset.name、asset.status等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
<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中。在这两个视图中,其他对象仍然存在,并且可以单击。只有文本是隐藏的,请参见。