2016-05-12 2 views
1

При определении настраиваемого фильтра в Angularjs, как показано ниже я передаю в наборе данных Я хочу фильтруется и массива в качестве значений фильтра:Angularjs передать массив пользовательского фильтра в качестве параметра

Кнопки переключения между государственной прошло в массиве enter image description here

значение массива параметров передается в фильтр enter image description here

Как фильтр называется:

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

Обычай проверки фильтра значения которых в массиве должны применяться путем фильтрации набора данных в нг-повтора.

.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

Пятно на. Спасибо. –