У меня есть ввод с использованием typeahead следующим образом:
<input type="text" id="unit" name="unit" class="form-control form-input" ng-model="item.unit"
autocomplete="off"
typeahead-min-length="0"
uib-typeahead="unit as unit.symbol for unit in units | typeaheadFilter:{'symbol':$viewValue} | orderBy:smartOrder"
typeahead-template-url="unit-template.html" />
А вот и шаблон:
<script type="text/ng-template" id="unit-template.html">
<a tabindex="-1">
<div class="row">
<span class="col-md-6 col-sm-6" ng-bind-html="match.model.symbol | uibTypeaheadHighlight:query"></span>
<span class="col-md-5 col-sm-5 col-md-offset-1 col-sm-offset-1" ng-bind-html="match.model.name | uibTypeaheadHighlight:query"></span>
</div>
</a>
</script>
в моей коллекции юнитов есть два предмета:
name=kilogram symbol=kg
name=litre symbol=L
На первый взгляд я подумал, что typeahead отлично работает.
Но когда я попробовал приведенные ниже комбинации клавиш, я обнаружил ошибку.
Дело 1
Работает:
Когда я набираю kg в typehead и дважды нажимаю tab, свойство item.unit имеет значение:
Object {_id: "58cd0cdf28ea727c68be7ac3", name: "Kilogram", symbol: "kg", numberOfDecimalPlaces: 3, isSystemUnit: false…}
Не работает:
Но когда я набираю kg в typehead и нажимаю esc, а затем нажимаю tab, свойство item.unit имеет значение:
kg
Дело:2
Работает:
Когда я набираю kg в typehead и дважды нажимаю tab, фокус уходит с элемента управления. Теперь свойство item.unit имеет значение:
Object {_id: "58cd0cdf28ea727c68be7ac3", name: "Kilogram", symbol: "kg", numberOfDecimalPlaces: 3, isSystemUnit: false…}
И затем, если я удалю текст в typeahead с помощью клавиши delete или backspace, то, если я перемещу фокус с typeahead, тогда item.unit будет
undefined.
Не работает:
Когда я набираю кг и дважды нажимаю Tab, фокус уходит с элемента управления. Теперь свойство item.unit имеет значение:
Object {_id: "58cd0cdf28ea727c68be7ac3", name: "Kilogram", symbol: "kg", numberOfDecimalPlaces: 3, isSystemUnit: false…}
И затем, если я удалю текст в typeahead, выбрав текст, а затем используя клавишу delete или backspace, то я перемещу фокус с typeahead, тогда item.unit по-прежнему имеет ценность:
Object {_id: "58cd0cdf28ea727c68be7ac3", name: "Kilogram", symbol: "kg", numberOfDecimalPlaces: 3, isSystemUnit: false…}
Я также поднял вопрос на их странице github.
Планкер:
Вот ссылка на plunker, который воспроизводит проблему: https://plnkr.co/edit/FIPANC3CcliNOeHHANxF