Дивіться ngOptions
ngOptions (необов’язково) - { comprehension_expression=
} - в одній з таких форм:
Для джерел даних масиву :
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
для об'єктів даних:
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
У вашому випадку так і має бути
array = [{ "value": 1, "text": "1st" }, { "value": 2, "text": "2nd" }];
<select ng-options="obj.value as obj.text for obj in array"></select>
Оновлення
З оновленнями AngularJS тепер можна встановити фактичне значення для value
атрибута select
елемента з track by
виразом.
<select ng-options="obj.text for obj in array track by obj.value">
</select>
Як запам'ятати цю потворну штучку
Для всіх людей, яким важко запам’ятати цю синтаксичну форму: я згоден, це не найпростіший чи найкрасивіший синтаксис. Цей синтаксис є свого роду розширеною версією розуміння списку Python, і знаючи, що допомагає мені запам'ятати синтаксис дуже легко. Це щось подібне:
Код 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']
Це насправді той самий синтаксис, що і перший, перерахований вище. Однак у <select>
нас зазвичай потрібно розмежовувати фактичне значення коду та текст, який відображається (мітка) в <select>
елементі.
Мовляв, нам потрібен person.id
код, але ми не хочемо показувати id
його користувачеві; ми хочемо показати його ім'я. Так само нас не цікавить person.name
код. Існує as
ключове слово, щоб позначити речі. Так стає так:
person.id as person.name for person in people
Або замість цього person.id
нам може знадобитися сам person
екземпляр / посилання. Дивись нижче:
person as person.name for person in people
Для об’єктів JavaScript застосовується той самий метод. Просто пам’ятайте, що предмети в об’єкті деконструюються (key, value)
парами.