Ответ 1
Я бы рекомендовал использовать ng-options, где вы можете.
<select ng-model="choice" ng-options="x.id as x.name for x in array"></select>
Потому что проверьте это: вы можете использовать его для выбора реальных объектов:
app.controller('ExampleCtrl', function($scope) {
$scope.items = [
{ id: 1, name: 'Foo' },
{ id: 2, name: 'Bar' }
];
$scope.selectedItem = null;
});
<div ng-controller="ExampleCtrl">
<select ng-model="selectedItem"
ng-options="item as item.name for item in items"></select>
{{selectedItem | json}}
</div>
В приведенном выше примере, когда вы выбираете что-то из раскрывающегося списка, он фактически устанавливает целую ссылку на объект на выбранном элементе, а не только тип значения.
ПРИМЕЧАНИЕ. Использование ng-options устанавливает ваши атрибуты value=""
в индексы элементов в ваших коллекциях, это по дизайну.
Это действительно лучший способ сделать это.
РЕДАКТИРОВАТЬ: больше контекста по запросу. Также здесь плункер, показывающий его в использовании