Смотрите 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)
парами.