7

Es gibt eine solche Anordnung:Wie Array in ng-Optionen nach Schlüssel sortiert?

month: Array[13]0: "M"1: "January"2: "February"3: "March"4: "April"5: "May"6: "June"7: "July"8: "August"9: "September"10: "October"11: "November"12: "December" 

ich tun:

ng-options="key as value for (key, value) in data.month | orderBy:key" 

Aber ich unsortiert Auswahlliste zu bekommen.

+0

Das Array ist bereits in der Kalenderreihenfolge, warum sortieren Sie es? – tvanfosson

Antwort

10

Um Tracking mit Filtern zu verwenden, verwenden Sie track by.

Markup

ng-options="key as value for (key, value) in data.month | orderBy:'key' track by key" 

aktualisieren

Diese orderBy wird nie funktionieren, weil Sie wörtliche Array sind. Sie benötigen diese Array JSON wie Objekt zu konvertieren, die strukturiert würde wie [{id: 0, value: "M"}, {id: 1, value: "January"},......]

HTML

ng-options="item.id as item.value for items in data.month | orderBy:'id'" 

Demo Plunkr

+0

Ich bekomme leere Auswahlliste nach Ihrer Lösung – Faud

+0

@Faud versuchen, einzelne '' 'auf Schlüssel wie @solid_luffy sagte –

+0

ist auch gleich. Funktioniert nicht. Ich bekomme Fehler: Fehler: $ parse: lexerr Lexer Fehler – Faud

2

Ihre zwei ' ‚s fehlt. Dieser Teil sollte orderBy: keyorderBy:'key' sein, dies

Versuchen:

ng-options="key as value for (key, value) in data.month | orderBy: 'key'" 
1

Um dieses Problem zu beheben ng-option wie so umformatieren müssen:

day.id as day.value for day in data.month 

Und Array data.month wäre, wie wie gesagt Benutzer pankajparkar