Angular UI Bootstrap - 未选择Typeahead下拉值时清除模型值?

Jos*_*sso 3 angularjs angular-ui-bootstrap angular-ngmodel

我正在试图找出如何设置UI.Bootstrap Typeahead(http://angular-ui.github.io/bootstrap/)仅在从下拉列表中进行选择时设置模型值,并清除该字段没有选择.

如果有一个不同的控制,这样做也会起作用.

Typeahead正在选择一个对象,如果用户只键入几个字符然后离开该字段,则将模型值设置为该字段的字符串值.我显然可以测试这种情况,但修改范围模型值不会刷新表单有效性.因此,如果我有一个必填字段,我还必须将字段的有效性设置为false.

这一切似乎都是某人必须已经想到的很多工作.有什么建议?

编辑

我的另一个想法是,最好的做法是将Typeahead与提交回服务器的范围值分开吗?

GGh*_*Ghe 7

我遇到了类似的问题.我绕过它的方式是使用模糊事件来验证.

<input type="text" ng-model="yourModel" ng-blur="validateSelection()
  typeahead="item for item in list | filter:$viewValue"">
Run Code Online (Sandbox Code Playgroud)

  • @hansmaad,很高兴您问到这一点,这很不错。您需要使用一些SetTimeout()技巧。ValidateSelection()函数的主体需要包装在SetTimeout()调用中并捕获超时ID。在菜单的click事件中,您可以使用clearTimeout()取消超时调用。因为是单击事件触发了模糊,所以您甚至不需要设置延迟值。超时的工作原理实际上只是将验证主体移动到该系列调用中最后调用的东西。 (2认同)