2015-06-30 3 views
0

У меня проблема с фильтрацией наборов результатов в ng-repeat. Фильтр запускается на каждой итерации через цикл ng-repeat (поэтому, если у меня есть 10 отправлений, возвращаемых currentDispatch.dispatches, он будет работать 10 раз). В первый раз, хотя, runs будет иметь только 1 элемент. В следующий раз через это будет 2, затем 3 и так далее. Какие результаты выглядят как на моем экране ....Накопительный массив фильтров Angularjs

[1], [1], [1,3], [1,3,4]

Как я могу сделать это так, только запускает фильтр один раз, поскольку он имеет все элементы для фильтрации? Мне нужен только конечный набор результатов, а не результат каждой итерации.

мой пользовательский фильтр

angular.module('prototype').filter('dispatchedForMyEquipment', ['Config', function(Config){ 
    return function(runs){ 
     var result = [] 
     var myEquipment = Config.getEquipment(); 
     runs.forEach(function(run, index, array){ 
      myEquipment.forEach(function(dispatchEquipment, index, array){ 
       if (run.units.indexOf(dispatchEquipment)!= -1){ 
        result.push(run); 
        return 
       } 
      });   
     }) 
     return result 
    } 
}]) 

мой раздел нг-повтор

<tr ng-repeat-start="dispatch in ($state.current.data.latest ? 
(currentDispatch.dispatches | orderBy: '-time' | dispatchedForMyEquipment) 
: (currentDispatch.dispatches | orderBy: '-time')) track by $index"> 

Я возьму трек по $ индекса один раз я решить проблему под рукой.

ответ

-1

Ng-repeat наблюдает за собой, возможно, вы получаете данные через запрос ajax. Сказав, что просто замаскируйте свой ng-repeat с помощью ng-if с условием, что у него есть все 10 элементов ... Грязный путь вправо.

+0

Это не сработает ... это требует, чтобы я знал, сколько элементов в моем списке, чего я не знаю. –

+0

Непонятный вопрос. Вы хотите запустить ng-repeat только один раз, теперь он показывает показ набора результатов после его завершения. –

Смежные вопросы