我在ng-repeat中过滤结果集时出现问题。过滤器在每次迭代中通过ng-repeat循环运行(因此,如果我有currentDispatch.dispatches
返回的10个调度,它将运行10次)。但是第一次runs
只有1个元素。下一次通过它将有2,然后3,依此类推。我的屏幕上的结果是什么......
[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
}
}])
我的ng-repeat子句
<tr ng-repeat-start="dispatch in ($state.current.data.latest ?
(currentDispatch.dispatches | orderBy: '-time' | dispatchedForMyEquipment)
: (currentDispatch.dispatches | orderBy: '-time')) track by $index">
一旦我解决了手头的问题,我将以$ index为基础。
答案 0 :(得分:-1)
Ng-repeat确实关注自己,也许你正在通过ajax请求获取数据。话虽如此,只需用ng-if掩盖你的ng-repeat,条件是它有所有10个元素......一个肮脏的方式正确。