2013-03-22 70 views
0

在我的html(.ng模板)中,我有一個應用了過濾器的數組。我想對這個過濾函數的結果應用一個map函數(在應用過濾器之前將它應用到整個數組太昂貴了)。舊版本的angularjs讓我通過在過濾器後應用數組映射函數

<ng-repeat = 'item in array.$filter(filterFunc).map(mapFunc).$orderBy("orderFunc()")'> 

這樣做,但隨着新的語法(V 1.0.5)我不能夠做到這一點。

<ng-repeat = 'item in array|filter:filterFunc|orderBy:"orderFunc()"'> 

我不明白如何將map函數應用於此。有什麼辦法可以做到這一點?

回答

1

模板很難測試,不要在模板中編寫任何業務邏輯,此外,這些函數將創建數組的新副本,並在每個$digest階段中每次應用地圖函數

您應該在您的控制器中執行此操作並在其中使用ngRepeat

function MyCtrl ($scope, $filter) { 
    var fullArray = [1,2,3]; 
    var otherArray = $filter(filterFunc).map(mapFunc); 
} 

<div ng-repeat="item in otherArray | orderBy:orderFn"></div> 

您也可以在控制器中訂購數組。

+0

奇怪的是,我有同樣的解決方案,我實際上是試圖移動模板中的邏輯.....我睏倦的白癡! – 0xc0de 2013-03-22 12:11:39