Список выбора со списком анализа Angular JS
У меня есть список строк с годами, например:
$scope.years = ["2001", "2002", "2003", ...];
Я пытаюсь сделать это на странице внутри select
тег, но angular продолжает нарушать код, отображая элементы вне тега.
У меня есть следующее на странице:
<select>
<option value="" disabled selected>----</option>
<option ng-repeat="y in years" value="{!y!}">{!y!}</option>
</select>
Я выполняю рендеринг, но все генерируемые теги параметров находятся вне тега select. Я что-то здесь не так делаю?
Редактировать: используя AngularJS 1.5.3
2 ответа
Ты можешь использовать ng-options
, который является рекомендуемым способом в AngularJS, и имеет много улучшений производительности по сравнению с ng-repeat
для этого случая.
Это потребует от вас иметь ng-model
также. И вы все еще можете иметь свой собственный вариант "Очистить / Выбрать".
Это будет выглядеть так:
<select ng-model="something" name="S"
ng-options="y for y in years">
<option value="" disabled selected>----</option>
</select>
Полный рабочий пример:
var app = angular.module("TestApp", []).controller("sample", ["$scope",
function($scope) {
$scope.years = ["2001", "2002", "2003"];
}
]);
angular.bootstrap(document, ["TestApp"]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.min.js"></script>
<div ng-controller="sample">
<select ng-model="something" name="S" ng-options="y for y in years">
<option value="" disabled selected>----</option>
</select>
</div>
PS
Я предполагаю !
в вашем коде по ошибке, если нет, вы не можете сделать это преобразование в HTML. Вам лучше иметь другой массив с отформатированными результатами и смотреть исходный массив, чтобы обновить преобразование.
Использование ng-options
вместо
документация: https://docs.angularjs.org/api/ng/directive/ngOptions
Пример PLNKR для вас здесь: https://plnkr.co/edit/tuKBJsxLxdUKcsRvWvax?p=preview
<select ng-model="selectedValue" ng-options="item for item in years"></select>