Angularjs过滤累积数组

时间:2015-06-30 02:46:32

标签: javascript angularjs

我在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为基础。

1 个答案:

答案 0 :(得分:-1)

Ng-repeat确实关注自己,也许你正在通过ajax请求获取数据。话虽如此,只需用ng-if掩盖你的ng-repeat,条件是它有所有10个元素......一个肮脏的方式正确。