angular-ui bootstrap typeahead escape key导致输入字段值变为undefined

时间:2014-07-14 06:46:28

标签: javascript angularjs twitter-bootstrap

我在解决这个问题上遇到了麻烦,这似乎是一个边缘情况。 当我从typeahead的下拉列表中选择(使用键盘或鼠标)一个值时,输入字段中的ng-model就会被填充。

但是,如果我输入几个字母,那么请点击' escape'按钮,' textFieldValue' ng-model似乎被“未定义”'覆盖。通过typeahead,因为我没有选择一个值。

解决此问题的最佳方法是什么?或者是一个边缘案件太多了?

<input type="text" ng-model="textFieldValue"
typeahead="list for list in getList($viewValue)" typeahead-editable="false">

1 个答案:

答案 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