我想使用ng-repeat
迭代一个数组,并根据函数属性过滤包含的对象。 Plunker
这意味着我有一个像这样的对象:
vm.show1 = function(){
return true;
};
var object1 = {label: 'Object1', show: vm.show1};
并想过滤它:
<div ng-repeat="object in ctrl.objects | filter:{show:true}">{{object.label}}</div>
显然在上面的例子中vm.show1
是一个函数(因此不等于true
)。有没有办法让过滤器调用函数并评估结果,还是我必须编写自定义过滤器?
编辑:这甚至可能吗?如果angular不能处理开箱即用的脏检查,则过滤器不知道何时需要重新评估该功能。
答案 0 :(得分:1)
我认为最好的方法是使用自定义过滤功能:
$scope.filterFn = function(object)
{
//if true, rendered in ng-repeat
//if false, not rendered in ng-repeat
return object.show1();
};
<div ng-repeat="object in ctrl.objects | filter:filterFn">