我在我的AngularJS项目中使用了typeahead,如果我输入完整值并单击该字段,我想让它选择条目.
我举了一个我的意思的例子
http://plnkr.co/edit/NI4DZSXofZWdQvz0Y0z0?p=preview
<input class='typeahead' type="text" sf-typeahead options="exampleOptions" datasets="numbersDataset" ng-model="selectedNumber">
如果我输入’two’并从下拉列表中点击’two’,我会得到完整的对象{id:2,name:’two’}.这很好,但是如果我键入’two’并单击到下一个字段而没有选择是否有办法接受列表顶部失去焦点的文本字段?
解决方法
我和EnigmaRM在一起,因为ngBlur似乎是你想要的方式.但是,我同意其他人的看法,这对最终用户来说可能有点奇怪.我的实现如下(
and in plnkr).请注意,我在ngBlur上触发,但仅当且仅当Bloodhound中只有一个匹配并且匹配完全匹配时才应用模型.我认为这可能是两个世界中最好的,并希望它应该给你足够的继续.
$scope.validateValue = function() { typedValue = $scope.selectedNumber; if(typedValue.num !== undefined && typedValue.num !== null) { return; } numbers.get(typedValue,function(suggestions) { if(suggestions.length == 1 && suggestions[0].num === typedValue) { $scope.selectedNumber = suggestions[0]; } }); };