2016-05-12 36 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。謝謝。 –