Zobacz ngOptions
ngOptions (opcjonalnie) - { comprehension_expression=
} - w jednej z następujących postaci:
W przypadku źródeł danych tablicowych :
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
W przypadku źródeł danych obiektowych:
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
W twoim przypadku tak powinno być
array = [{ "value": 1, "text": "1st" }, { "value": 2, "text": "2nd" }];
<select ng-options="obj.value as obj.text for obj in array"></select>
Aktualizacja
Dzięki aktualizacjom AngularJS można teraz ustawić rzeczywistą wartość value
atrybutu select
elementu z track by
wyrażeniem.
<select ng-options="obj.text for obj in array track by obj.value">
</select>
Jak zapamiętać te brzydkie rzeczy
Wszystkim ludziom, którzy mają trudności z zapamiętaniem tej formy składni: Zgadzam się, że nie jest to najłatwiejsza i najpiękniejsza składnia. Ta składnia jest swego rodzaju rozszerzoną wersją rozumienia list w Pythonie i wiedza, która pomaga mi bardzo łatwo zapamiętać składnię. To jest coś takiego:
Kod 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']
Jest to w rzeczywistości ta sama składnia, co pierwsza wymieniona powyżej. Jednak w <select>
zwykle musimy rozróżnić rzeczywistą wartość w kodzie i tekst wyświetlany (etykieta) w <select>
elemencie.
Potrzebujemy person.id
kodu, ale nie chcemy pokazywać id
tego użytkownikowi; chcemy pokazać jego nazwę. Podobnie, nie jesteśmy zainteresowani person.name
kodem. Pojawia się as
słowo kluczowe do oznaczania rzeczy. Więc wygląda to tak:
person.id as person.name for person in people
Lub zamiast tego person.id
potrzebowalibyśmy samej person
instancji / referencji. Patrz poniżej:
person as person.name for person in people
W przypadku obiektów JavaScript obowiązuje również ta sama metoda. Pamiętaj tylko, że przedmioty w obiekcie są zdekonstruowane za pomocą (key, value)
par.