Angular-ui Bootstrap Typeahead控件和ng-keydown

时间:2013-10-30 09:59:49

标签: angularjs angular-ui bootstrap-typeahead

在我的应用程序中,我有一个具有此行为的表单:表单字段值在输入失去焦点或用户点击Enter后逐步上传到服务器。它是通过挂钩丢失焦点(自定义指令)和按键(ng-keydown)事件来完成的。与此同时,我使用Angular-ui Bootstrap Typeahead控件进行城市查找(以及其他一些领域)。输入看起来像这样:

<input type="text" name="city"
ng-model="dispatcher.city"
ng-keydown="dispatcher.inputKeyPress($event)"
typeahead="obj.city as obj.city for obj in lookup('city', $viewValue)">

没有预先输入的输入工作正常,但是当涉及到城市输入时,它的工作方式如下:

  1. 用户开始输入城市,例如经度
  2. 预先显示带有建议的弹出窗口
  3. 用户选择伦敦并按Enter键
  4. typeahead填充伦敦的输入,但不久之后是输入 值已更改为Lon a,即发送到服务器的值。
  5. 我认为按键事件会产生两个动作:按字母顺序排列进程,同时ng-keydown以其方式解释它。在我看来,无论是typeahead应该“消耗”事件而不是让它“进一步”,或者ng-keydown回调应该知道是否显示了先行建议(以便它可以“跳过”某些事件)。

    我玩过typeahead-on-select="onSelect($item, $model, $label)",但我无法以某种方式同步这两个回调(inputKeyPressonSelect) - 按键似乎更快就会运行。

    如何完成任何这些建议?或者其他任何事情都可以完全?

    由于

    除此之外,Typeahead是一个很好的控制。

1 个答案:

答案 0 :(得分:0)

尝试删除你的keydown事件挂钩,对我而言,看起来你真的不需要它。您的逻辑应该在typeahead的选择事件和失去焦点时触发,您将在所有情况下跟踪值的变化。

希望这有帮助