angularjs ng-repeat ng-options custom filter


.filter('statusFilter', function() {
return function(listings) {
var filtered = [];
var arr = [];
angular.forEach(listings, function(listing) {
if(listing.status != 0){
filtered.push(listing);
}
});
return filtered;
};
})

上面的过滤器工作正常,以便从ng重复表每行的下拉列表中删除状态为零的条目。

但是,我的老板说,如果它们是当前的默认选择,他需要保留状态为零的条目。使用上述过滤器,对于状态为零的条目,默认选择为空。

这是 ng 重复:

ng-repeat="task in tasksCtrl.tasks"

下面是包含ng选项的ng重复表单元格:

<td level="{{tasksCtrl.level}}" check-permissions="onlyAdmin">
<select name="selValidator-{{ task.id }}"
class="full-width select-width-tasks"
ng-options="item.id_user as item.name for item in tasksCtrl.validators | statusFilter" 
ng-model="task.validator_id" 
</select>
</td>

我还需要添加到列表状态为零但listing.id_user等于 task.validator_id 的过滤器列表中

因此,我相信我需要添加task.validator_id作为参数来传递函数。不过我很挣扎!

任何帮助将不胜感激。

解决方案

.filter('statusFilter', function() {
return function(listings, id) {
var filtered = [];
angular.forEach(listings, function(listing) {
//console.log([id, listing.id_user, listing.name, id == listing.id_user]);
if(listing.status != 0 || id == listing.id_user){
filtered.push(listing);
}
});
return filtered;
};
})

ng-选项:

ng-options="item.id_user as item.name for item in tasksCtrl.validators | statusFilter:task.validator_id"

最新更新