使用各种数组或对象项过滤ng-repeat?

时间:2014-05-13 17:35:02

标签: javascript angularjs

好的,我有一个ng-repeat:

<div id="scrolltwo" class="animate-repeat panel" ng-repeat="items in arrayfull |filter:filtertype ">

在filtertype我有:

[[0] => "Typeone", [1] => "Typetwo" ]

如何让过滤器迭代整个数组并匹配与值匹配的结果?

使用自定义过滤器进行更新:

<div id="scrolltwo" class="animate-repeat panel" ng-repeat="items in arrayfull | array | filter:matchaccnttypes(accnttypes)">

有效的数组滤镜:

.filter('array', function() {
  return function(items) {
    console.log(items);
    var filtered = [];
    angular.forEach(items, function(item) {
      filtered.push(item);
    });
   return filtered;
  };
})

没有的matchaccountypes!:

                    $scope.matchaccnttypes = function matchaccnttypes(query) {
                        return function(items) {
                                return items.Organtype.match(query); 
                            angular.forEach($scope.accnttypes, function(value, key){
                                console.log(key + ': ' + value);
                             });
                        }
                    }; 

它只返回传递给$ scope.accntypes数组的最后一个值,该数组是上面的示例数组..

1 个答案:

答案 0 :(得分:1)

借助于underscoreJS的自定义过滤器。这是 Fiddle

app.filter('arrayFilter', function() {
    return function(input, filterType) {
         return  _.intersection(input,filterType);
    };
});

没有UnderscoreJS

app.filter('arrayFilter', function() {
    return function(input, filterType) {
       var filterdArray =[];
         angular.forEach(input, function(inputValue, key){
             angular.forEach(filterType, function(filterTypeValue, key){
                 if(inputValue==filterTypeValue){
                     filterdArray.push(inputValue);
                 }
     });

     });
     return filterdArray;

    };
});

ng-repeat应按以下方式使用。

ng-repeat="array in arrayfull | arrayFilter : filterType"