Моя форма select
и ng-options
отлично работала на AngularJS 1.2.26, всегда отображая выбор по умолчанию, если toy.toy_container_name
был доступен в массиве containers
. Однако после обновления до 1.3.0 выпадающее меню выбора больше не показывает выбор по умолчанию (такое же поведение в Chrome, FF и Safari, а не проблема с браузером). Мой тест Selenium поймал это, и теперь я озадачен тем, почему. 1.3.0, похоже, не имеет каких-либо отклонений или заметных изменений (из 1.2.6), которые могут привести к этой проблеме. Кроме того,
<select class="form-control" ng-model="toy.toy_container_name" ng-options="c.container_name as c.container_name for c in containers" required>
<option value="">- Pick Container -</option>
</select>
Дальнейшее выполнение этого смешения - проверка источника показывает правильный выбор; однако в поле выбора выпадающего меню не отображается выбранное значение по умолчанию:
Инспектор Chrome Elements:
<option value="" class="">- Pick Container -</option>
<option value="0">A-BIN</option>
<option value="1" selected="selected">B-BIN</option>
<option value="2">F-BIN</option>
<option value="3">G-BIN</option>
EDIT: я нашел проблему:
Зачем нужно перемещать '$ scope.toy = toy;' после извлечения для контейнеров разница в новом Angular 1.3.0?
$http({method: 'GET', url:'/toys/'+$stateParams.id}).success(function(toy, status, headers, config) {
$scope.original = angular.copy(toy);
//$scope.toy = toy; // WORKED in AngularJS 1.2.26 but not 1.3.0
$http({method: 'GET', url:'/containers'}).success(function(containers, status, headers, config) {
$scope.toy = toy; // moved from where previously commented; NOW works with AngularJS 1.3.0
$scope.containers = containers;
}).error(errorMessage.onError);
}).error(errorMessage.onError);