2013-05-29 20 views
19

我有一個對象,看起來像這樣:AngularJS - 如何排序依據在NG-重複類似陣列的對象的值

{ 
    "03" : "Apple", 
    "02" : "Banana", 
    "01" : "Cranberry" 
} 

,並通過按鍵訂購它(這是有道理的)在我的重複。這導致標籤不按字母順序排列(「蔓越莓」是第一個)。我如何做到這一點,以便它按值(按字母順序)排列我的中繼器?

我可以按照我想要的ng-repeat的順序提供它,但它按鍵排序。如果我可以讓它而不是做到這一點,那麼也可以。

+0

有什麼阻止你在控制器對數據進行排序? –

+2

我不知道答案,但我確實知道,提供預先排序將無法正常工作的對象,因爲JS引擎不一定要保持性能的一個對象的順序。 – IMSoP

回答

28

要按ngRepeat陣列可以使用orderBy filter但它僅適用於數組,所以你應該ngRepeat使用數組。

它會是這樣的控制器:

$scope.myData = [ 
    { 
     key: "01", 
     value: "Cranberry" 
    }, 
    { 
     key: "02", 
     value: "Banana" 
    }, 
    { 
     key: "03", 
     value: "Apple" 
    } 
]; 

和HTML:

<div class="item" ng-repeat="item in myData|orderBy:'value'">{{item.value}}</div> 
+1

但是,如果您真的想要在範圍內使用對象,則可以創建一個將對象轉換爲數組的過濾器。 –

+0

沒有特別需要使用對象,所以我使用了你所建議的方法,它的工作效果很好。謝謝 :) –