按功能过滤ng-repeat

时间:2016-04-25 11:59:31

标签: javascript angularjs filter

我想使用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不能处理开箱即用的脏检查,则过滤器不知道何时需要重新评估该功能。

1 个答案:

答案 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">