2013-05-29 6 views
19

Şöyle bir nesne vardır: (mantıklı) içindeangularjs - Bir ng-tekrarında bir dizi benzeri nesnenin değerini orderBy nasıl

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

ve anahtarları bunu emreder ng-yinem. Bu, etiketlerin alfabetik sıraya aykırı olmasına ("kızılcık" ilk olarak) neden olur. Yineleyicimi değerlerle (alfabetik olarak) sipariş vermesini nasıl sağlayabilirim?

Ng-yinelemek istediğim sırayla sağlayabilirim, ancak anahtar tarafından sıraya dizilir. 'u yapamazsam, o zaman işe yarayacaktır.

+0

şey denetleyicisi veriler sıralanırken alıkoyar var mı

O denetleyicisi böyle bir şey olacak? –

+2

Cevabı bilmiyorum, ancak önceden sıralanmış olan nesneyi sağlamanın işe yaramayacağını biliyorum, çünkü JS motorları bir nesnede özelliklerin sırasını korumak zorunda değildir. – IMSoP

cevap

28

ngRepeat'ta diziyi sıralamak için orderBy filter'u kullanabilirsiniz, ancak yalnızca dizilerle çalışır, bu nedenle ngRepeat'ta diziyi kullanmalısınız.

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

ve html

:

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

Ancak, nesneyi kapsam içinde kullanmak istiyorsanız, nesneyi diziye dönüştüren bir filtre oluşturabilirsiniz. –

+0

Bir nesneyi kullanmak için özel bir ihtiyaç yoktu, bu yüzden önerdiğiniz yöntemi kullandım ve harika çalışıyor. Teşekkür ederim :) –