如何在角度过滤功能中传递多个参数,而不是自定义过滤器

时间:2014-12-16 14:39:54

标签: angularjs angularjs-ng-repeat ng-repeat angular-filters

我努力尝试并访问了许多类似这样的问题,但仍然无法解决这个问题。

我想在角度滤镜功能中传递额外的参数。我发现解决方案如下,但它不起作用。我在ng-repeat中使用的对象未定义。

<li ng-repeat="user in users | filter:isStatus(user,secondParam)">{{user.name}}</li>

如下所示,角度自定义滤镜有解决方案,但也不能使用角度滤镜功能。

<li ng-repeat="user in users | filter:isStatus:user:secondParam">{{user.name}}</li>

jsFiddle - 你可以在这里看到我的问题。

4 个答案:

答案 0 :(得分:14)

将尝试:

$scope.isStatus = function(secondParam, thirdParam){
      return function(user) {
           console.log(secondParam);
           console.log(thirdParam);
           return user.status == $scope.status;
     }

更新版本http://jsfiddle.net/4PYZa/282/

答案 1 :(得分:4)

根据您的情况,您可以使用谓词表达式而不是自定义过滤器:

<li ng-repeat="user in users | filter:{status: status, name: name}">{{user.name}}</li>

看看这个小提琴:http://jsfiddle.net/ovym2tpr/28/

你可以使用自定义过滤器,它只是执行得不是很好,特别是在嵌套ng-repeat

答案 2 :(得分:1)

这很简单,只需这样做

<li ng-repeat="user in users | filter:user | filter : secondParam)">{{user.name}}</li>

答案 3 :(得分:0)

How do I call an Angular.js filter with multiple arguments?

AngularJS : Custom filters and ng-repeat

 myApp.filter("isStatus ", function() { // register new filter
     return function(user, secondParam, thirdParam) { // filter arguments

       return user.status == $scope.status; // implementation
    };
 });

从模板调用

<li ng-repeat="user in users | isStatus:secondParam">{{user.name}}</li>