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

Другие вопросы по тегам