Поля выбора AngularJS
AngularJS позволяет создавать раскрывающиеся списки на основе элементов массива или объекта.
Создание поля выбора с помощью ng-options
Если вы хотите создать выпадающий список на основе объекта или массива в AngularJS, вам следует использовать ng-options
директиву:
Пример
<div ng-app="myApp" ng-controller="myCtrl">
<select ng-model="selectedName"
ng-options="x for x in names">
</select>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl',
function($scope) {
$scope.names = ["Emil", "Tobias",
"Linus"];
});
</script>
вариантов и повторов
Вы также можете использовать ng-repeat
директиву для создания такого же выпадающего списка:
Пример
<select>
<option ng-repeat="x in names">{{x}}</option>
</select>
Поскольку ng-repeat
директива повторяет блок HTML-кода для каждого элемента массива, ее можно использовать для создания параметров в раскрывающемся списке, но ng-options
директива была создана специально для заполнения раскрывающегося списка параметрами.
Что я использую?
Вы можете использовать как ng-repeat
директиву, так и ng-options
директиву:
Предположим, у вас есть массив объектов:
$scope.cars = [
{model : "Ford Mustang", color :
"red"},
{model : "Fiat 500", color : "white"},
{model : "Volvo XC90", color : "black"}
];
Пример
Использование ng-repeat
:
<select ng-model="selectedCar">
<option ng-repeat="x in cars" value="{{x.model}}">{{x.model}}</option>
</select>
<h1>You selected: {{selectedCar}}</h1>
При использовании значения в качестве объекта используйте ng-value
insead of value
:
Пример
Использование ng-repeat
в качестве объекта:
<select ng-model="selectedCar">
<option ng-repeat="x in cars" ng-value="{{x}}">{{x.model}}</option>
</select>
<h1>You selected a {{selectedCar.color}} {{selectedCar.model}}</h1>
Пример
Использование ng-options
:
<select ng-model="selectedCar" ng-options="x.model for x in cars">
</select>
<h1>You selected: {{selectedCar.model}}</h1>
<p>Its color is: {{selectedCar.color}}</p>
Когда выбранное значение является объектом, оно может содержать больше информации, и ваше приложение может быть более гибким.
Мы будем использовать ng-options
директиву в этом уроке.
Источник данных как объект
В предыдущих примерах источником данных был массив, но мы также можем использовать объект.
Предположим, у вас есть объект с парами ключ-значение:
$scope.cars = {
car01 : "Ford",
car02 : "Fiat",
car03 : "Volvo"
};
Выражение в ng-options
атрибуте немного отличается для объектов:
Пример
Использование объекта в качестве источника данных x
представляет ключ и
y
представляет значение:
<select ng-model="selectedCar" ng-options="x for (x, y) in cars">
</select>
<h1>You selected: {{selectedCar}}</h1>
Выбранное значение всегда будет значением в паре ключ- значение .
Значение в паре ключ - значение также может быть объектом:
Пример
Выбранное значение по-прежнему будет значением в паре ключ- значение , только на этот раз это объект:
$scope.cars = {
car01 : {brand : "Ford", model : "Mustang", color :
"red"},
car02 : {brand : "Fiat", model : "500", color : "white"},
car03 : {brand : "Volvo", model : "XC90", color : "black"}
};
Параметры в раскрывающемся списке не обязательно должны быть ключом в паре ключ -значение, это также может быть значение или свойство объекта значения:
Пример
<select ng-model="selectedCar" ng-options="y.brand for (x, y) in cars">
</select>