7

C'è una tale matrice:Come ordinare la matrice in ng-options per chiave?

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" 

faccio:

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

Ma ho indifferenziati lista di selezione.

+0

La matrice è già in ordine di calendario, perché la stai ordinando? – tvanfosson

risposta

10

Per utilizzare il rilevamento con i filtri, utilizzare track by.

Markup

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

Aggiornamento

Questo orderBy non funzionerà mai, perché si stanno avendo array letterale. È necessario convertire questo array di JSON come oggetto che sarebbe strutturato come [{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

Ottengo vuoto elenco di selezione con la vostra soluzione – Faud

+0

@Faud provare ad aggiungere singolo '' 'sul tasto come @solid_luffy ha detto –

+0

Inoltre è lo stesso. Non funziona. Ottengo errore: Errore: $ parse: lexerr Errore Lexer – Faud

2

tuo mancano due ' s'. Questa parte, orderBy: key dovrebbe essere orderBy:'key'

Prova questa:

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

Per risolvere questo problema necessario riformattare ng-option come come:

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

E gamma data.month sarebbe come come utente detto pankajparkar