我在解决这个问题上遇到了麻烦,这似乎是一个边缘情况。 当我从typeahead的下拉列表中选择(使用键盘或鼠标)一个值时,输入字段中的ng-model就会被填充。
但是,如果我输入几个字母,那么请点击' escape'按钮,' textFieldValue' ng-model似乎被“未定义”'覆盖。通过typeahead,因为我没有选择一个值。
解决此问题的最佳方法是什么?或者是一个边缘案件太多了?
<input type="text" ng-model="textFieldValue"
typeahead="list for list in getList($viewValue)" typeahead-editable="false">
答案 0 :(得分:2)
您可以使用临时值来完成此操作。
将临时值分配给typeahead
<input type="text" ng-model="tempValue" typeahead="list for list in getList($viewValue) | filter:$viewValue" typeahead-editable="false" >
观察tempValue并决定是否更新目标值。
$scope.$watch('tempValue', function(tempValue){
if(shouldUpdateTheTargetValue(tempValue)) {
$scope.targetValue = tempValue;
}
});
我为此创造了一个plunker。 - http://plnkr.co/edit/r63027iRobX4skV9YK60?p=preview