2015-06-30 105 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 
    } 
}]) 

我NG重複條款

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

一旦我解決這個問題的手,我將採取由$指數跟蹤了。

回答

-1

吳重複確實注意自己,也許你正在通過ajax請求獲取數據。話雖如此,只是用ng來掩蓋你的ng-repeat,如果條件是它有全部10個元素......一個骯髒的方式是正確的。

+0

這不會起作用...這需要我知道我的列表中有多少元素,我不知道。 –

+0

誤解了你的問題。你只想運行一次ng-repeat,它現在就是一旦完成後顯示結果集。 –