[英]Angularjs filter cumulative array
我在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进行跟踪。
Ng-repeat会自动监视,也许您是通过ajax请求获取数据的。 话虽这么说,但要用ng-if屏蔽ng-repeat,前提是它必须包含所有10个元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.