<script>
var appMod = angular.module('myapp', []);
appMod.controller('myController', ['$scope', function($scope) {
$scope.DefaultOptions = ["First", "Second", "Third", "Fourth"];
}]);
</script>
<body ng-app="myapp" ng-controller="myController">
<div>
<select ng-options="o as o for o in DefaultOptions" ng-model="chosen"></select>
</div>
<div>
Chosen Value: <span ng-bind="chosen"></span>
</div>
</body>
Инструкции:
1. В Chrome (не в Firefox!) Выберите раскрывающийся список с помощью мыши и выберите "Первый",
2. Затем нажмите downarrow.
3. Обратите внимание, что в раскрывающемся списке отображается "Второе", в то время как динамически связанное значение все еще показывает "Frist",
4. Снова нажмите downarrow.
5. Теперь как поле выбора, так и связанное поле показывают "Третий".
6. Понятно, что существует некоторая "магия", происходящая в угловом отношении к второму событию keydown или неправильные здесь ng-опции?
7. Это происходит всегда, даже если вы выбираете "Третий" вместо "Первого" на первом шаге.
Вот плукер для вопроса в заголовке.
http://embed.plnkr.co/x7dauZHIlriXpWd4kmgz/preview
Может кто-то объяснить, это ошибка в Angularjs или какая-то проблема при использовании ng-опций?
PS: Я думал, из всех браузеров Chrome будет самым приятным для Angularjs.
<select ng-options="o as o for o in DefaultOptions" ng-model="chosen">
<option value='' disabled selected style='display:none;'>Choose an option</option>
</select>
Нашел ответ (скорее, странный трюк для странного поведения). Если параметр указан указанным выше образом, то всплывающее меню можно безопасно перемещать по клавиатуре. Кто бы мог подумать об этом!