В HTML5 Select в Angularjs отсутствует второе событие нажатия клавиш

0
<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.

  • 0
    В фоновом режиме Angular Binding работает со значением, и по умолчанию выбранное значение отсутствует. Это может быть так.
  • 0
    Вы можете использовать ng-repeat для этого
Показать ещё 2 комментария
Теги:
drop-down-menu
html-select

1 ответ

0
<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>

Нашел ответ (скорее, странный трюк для странного поведения). Если параметр указан указанным выше образом, то всплывающее меню можно безопасно перемещать по клавиатуре. Кто бы мог подумать об этом!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню