У меня проблема с фильтрацией наборов результатов в 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">
Я возьму трек по $ индекса один раз я решить проблему под рукой.
Это не сработает ... это требует, чтобы я знал, сколько элементов в моем списке, чего я не знаю. –
Непонятный вопрос. Вы хотите запустить ng-repeat только один раз, теперь он показывает показ набора результатов после его завершения. –