Siehe ngOptions
ngOptions (optional) - { comprehension_expression=
} - in einer der folgenden Formen:
Für Array-Datenquellen :
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
Für Objektdatenquellen:
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
In Ihrem Fall sollte es sein
array = [{ "value": 1, "text": "1st" }, { "value": 2, "text": "2nd" }];
<select ng-options="obj.value as obj.text for obj in array"></select>
Aktualisieren
Mit den Aktualisierungen von AngularJS ist es jetzt möglich, den tatsächlichen Wert für das value
Attribut des select
Elements mit track by
Ausdruck festzulegen.
<select ng-options="obj.text for obj in array track by obj.value">
</select>
Wie man sich an dieses hässliche Zeug erinnert
An alle Menschen, die es schwer haben, sich an diese Syntaxform zu erinnern: Ich stimme zu, dass dies nicht die einfachste oder schönste Syntax ist. Diese Syntax ist eine Art erweiterte Version von Pythons Listenverständnis und dem Wissen, dass ich mich sehr leicht an die Syntax erinnern kann. Es ist ungefähr so:
Python-Code:
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']
Dies ist eigentlich die gleiche Syntax wie die erste oben aufgeführte. In der <select>
Regel müssen wir jedoch zwischen dem tatsächlichen Wert im Code und dem in a gezeigten Text (der Bezeichnung) unterscheiden<select>
Element unterscheiden.
Wie brauchen wir person.id
im Code, aber wir wollen das id
dem Benutzer nicht zeigen ; wir wollen seinen Namen zeigen. Ebenso interessiert uns der person.name
im Code nicht. Es kommt das as
Schlüsselwort, um Sachen zu beschriften. So wird es:
person.id as person.name for person in people
Oder stattdessen person.id
könnten wir die person
Instanz / Referenz selbst benötigen . Siehe unten:
person as person.name for person in people
Für JavaScript-Objekte gilt dieselbe Methode. Denken Sie daran, dass die Elemente im Objekt (key, value)
paarweise dekonstruiert werden.