Vedi ngOptions
ngOptions (opzionale) - { comprehension_expression=} - in una delle seguenti forme:
Per origini dati array :
label for value in array
select as label for value in array
label group by group for value in array
select as label group by group for value in array track by trackexpr
Per origini dati oggetto:
label for (key , value) in object
select as label for (key , value) in object
label group by group for (key, value) in object
select as label group by group for (key, value) in object
Nel tuo caso, dovrebbe essere
array = [{ "value": 1, "text": "1st" }, { "value": 2, "text": "2nd" }];
<select ng-options="obj.value as obj.text for obj in array"></select>
Aggiornare
Con gli aggiornamenti su AngularJS, è ora possibile impostare il valore effettivo per l' valueattributo di selectelemento con track byespressione.
<select ng-options="obj.text for obj in array track by obj.value">
</select>
Come ricordare questa roba brutta
A tutte le persone che hanno difficoltà a ricordare questo modulo di sintassi: sono d'accordo che questa non è la sintassi più semplice o bella. Questa sintassi è una specie di versione estesa della comprensione e della comprensione dell'elenco di Python che mi aiuta a ricordare molto facilmente la sintassi. È qualcosa del genere:
Codice Python:
my_list = [x**2 for x in [1, 2, 3, 4, 5]]
> [1, 4, 9, 16, 25]
# Let people to be a list of person instances
my_list2 = [person.name for person in people]
> my_list2 = ['Alice', 'Bob']
Questa è in realtà la stessa sintassi della prima elencata sopra. Tuttavia, di <select>solito è necessario distinguere tra il valore effettivo nel codice e il testo mostrato (l'etichetta) in un <select>elemento.
Ad esempio, abbiamo bisogno person.iddel codice, ma non vogliamo mostrarlo idall'utente; vogliamo mostrare il suo nome. Allo stesso modo, non ci interessa person.nameil codice. Arriva la asparola chiave per etichettare le cose. Quindi diventa così:
person.id as person.name for person in people
Oppure, invece di person.idpotremmo aver bisogno persondell'istanza / riferimento stesso. Vedi sotto:
person as person.name for person in people
Per gli oggetti JavaScript, si applica anche lo stesso metodo. Ricorda solo che gli oggetti nell'oggetto sono decostruiti con (key, value)coppie.