2016-05-12 34 views
1

当Angularjs定义自定义过滤器如下面我传递在数据集中欲过滤和阵列作为滤波器值:Angularjs传递数组来定义过滤器作为参数

开关按钮状态在阵列中传递 enter image description here

参数数组值传递到过滤器 enter image description here

过滤器是如何称为:

<div class="row" ng-repeat="item in data | filterStats:filters"> 

自定义过滤器检查哪些值阵列中应该通过过滤所述数据以ng重复设置适用。

.filter('filterStats', function() { 
     return function (items, paramArray) { 
     var isFilterEmpty = true; 
      angular.forEach(paramArray, function (value, key) { 
      if (value == 0) { 
       isFilterEmpty = false; 
      } 
     }); 

     if(!isFilterEmpty) 
     //More logic 
    } 
} 

问题:的问题是,阵列参数似乎并不能够循环使用自定义过滤器的内部一个foreach。参数数组显示[Array[0]]因此看起来是空的。 任何人都可以请就这件事提供指导吗?是否可以将数组作为自定义过滤器参数传递?我错过了什么?

Tx. 

回答

2

看起来你很可能定义filters作为数组,但在使用它像一个对象。

您没有在数组中放入任何索引,所以它是空的。通过这样做filters.Limited = '-1'这是在加入命名属性到数组,但数组的实际长度仍为0

var a = []; 
a.length; // 0 
a.something = '123'; 
a.length // still 0 
a[0] = '456'; 
a.length; // now 1 

相反,如果你定义filters变量作为对象,而不是一个数组我想你的代码将按照您的预期工作。

$scope.filters = {};

+0

Spot on。谢谢。 –