我有一个正确迭代的对象:
<select ng-options="value.name for (key,value) in ctrl.userList"></select>
我想在对象上添加一个过滤器,例如:
|filter:value.superior!=null
仅显示没有任何当前分配优先级的用户。
现在看来,它没有显示,但应该显示1.在应用过滤器时是否存在我缺少的内容?
我一直在使用的完整示例:
<select ng-options="value.name for (key,value) in ctrl.userList | filter: value.superior!=null"></select>
我正在迭代的样本是:
Var obj = {
0: {name:"test", superior:null},
1: {name:"test 2", superior:0}
};
示例角度小提琴:http://jsfiddle.net/p4Lj11on/
答案 0 :(得分:1)
根据angular doc,filter的第一个参数必须是数组。你正在传递物体。如果userList是一个数组,它将正常工作(试试这个)。您可以使用自定义过滤器来解决此问题。
app.filter('myfilter', function() {
return function(obj, prop, value) {
var result = {};
for(key in obj) {
if(obj[key][prop] !== value)
result[key] = obj[key];
}
return result;
};
});
标记:
|myfilter: 'superior' : null
答案 1 :(得分:1)
我想如果您决定更改为一系列对象,并帮助其他人解决此问题,我会添加此答案以提供帮助。
http://plnkr.co/edit/cm8xoH5oVewTxce98L47?p=preview
HTML元素;
<select ng-model="test" ng-options="value.name for (key,value) in obj | filter:{superior: ''}"></select>
角度数组;
$scope.obj = [
{
name: "test",
superior: null
},
{
name: "test2",
superior: 0
}];