如何将ng-repeat项属性传递给过滤器?

时间:2016-06-08 09:38:53

标签: javascript angularjs

我创建了一个filter我要传递一个item属性,而不是项目本身。这可能吗?

以下不起作用(item.param1失败):

ng-reapeat="item in items | filter : fnFilter(item.param1)"

$scope.fnFilter = function(value) {
    return value == "test";
}

1 个答案:

答案 0 :(得分:1)

你的问题还不清楚,因为你不能说出你的目标是什么。

所以,如果我只是限制我在那里看到的内容,并按照@CeylanMumumKocabas已经提供的链接Angular filter exactly on object key进行操作

ng-repeat="item in items | filter:{'param1':  'test'}"

现在让我们考虑你想要更复杂的东西:我看到的唯一方法是将属性的名称传递给过滤器:

ng-reapeat="item in items | myFilter:'param1'"

  myApp.filter('myFilter', function () {  
      return function(inputs,attributeName) {
      var output = [];
      angular.forEach(inputs, function (input) {
        if (input[attributeName] == 'test')
            output.push(input);
        });
       return output;
   };
});

请注意,如果您想要使用多个级别,则必须使用$ eval或make添加一些代码才能使用。