ng-options выбирает элемент с индексом 0, когда ng-модель пуста (только после дайджест-цикла)
У меня есть <select>
для чего я использую ng-options
заполнить варианты. Модель выбора представляет собой строку. Я заполняю строку параметром маршрута, прежде чем параметры загружаются асинхронно.
В контроллере:
$scope.selection = $routeParams.id; // optional, so defaults to undefined
$scope.items = [{id: "uuid1", name: "item 1"}, {id: "uuid2", name: "item2"}];
В шаблоне:
<select ng-model="selection" ng-options="item.id as item.name for item in items">
<option value="" disabled>-- please select --</options>
</select>
Рендеринг HTML выглядит следующим образом:
<select ng-model="selection" ng-options="item.id as item.name for item in items">
<option value="" disabled>-- please select --</options>
<option value="0">Item 1</options>
<option value="1">Item 2</options>
</select>
Когда я захожу на страницу без параметра id маршрута, "- пожалуйста, выберите -" правильно выбран. Когда я делаю что-то еще на странице, окно выбора внезапно выбирает "Элемент 1", но $scope.selection
все еще undefined
,
Я подозреваю, что угловые проверки, если undefined
Значение равно значению опции "0", поэтому она выбирает его.
Как я могу предотвратить это?
Я использую угловой 1.2.17 (по причинам обратной совместимости), но я также проверил это с 1.3.0.
1 ответ
Попробуй это $scope.selection = $scope.items[$routeParams.id];
Официальный угловой jsfiddle