Я создал этот jsBin, чтобы продемонстрировать проблему, с которой я столкнулся. Если вы пойдете сюда, попробуйте набрать «Пять» и двигаться дальше. Вашей естественной реакцией было бы ввести «Пять», а затем нажать клавишу Tab, и если бы вы хотели «Пятьсот», вы бы один раз прокрутили стрелку вниз; однако в этом случае вам нужно ввести «Пять», а затем либо нажать клавишу ESC, либо физически вывести мышь из поля, не нажимая ни на какие другие параметры.
Итак, в основном, когда вы используете typeahead, если есть хотя бы один результат, соответствующий вашим текущим критериям, нажатие Tab выберет его. Мое ожидаемое поведение заключается в том, что при вводе текущая выбранная опция — это именно то, что вы вводите, и если вы хотите получить один из других результатов, вы должны нажать стрелку вниз один или несколько раз.
Вот код, который находится в jsBin:
<div ng-controller="TestController">
<div>
{{selected}}
</div>
<input type="text" ng-model="selected" typeahead="item for item in typeaheadOptions | filter:$viewValue">
</div>
И JavaScript:
var app = angular.module('app', ['ui.bootstrap'])
.controller('TestController', function($scope) {
$scope.typeaheadOptions = [
'One','Two','Three','Four','Five-Hundred','Fifteen','Fourteen','Fifty','Six','Seven','Eight','Nine','Ten'
]
});