控制器之前的AngularJS指令事件

豪尔赫·瓜罗拉

我需要一些帮助来强制在控制器事件之前从指令执行事件。我的情况是下一个:

我在控制器中有一个带有搜索方法的输入:

 <input type="text" name="searchText"
  required
  data-ng-model="searchText"
  data-ng-enter="search(searchText)" />

以及一个用于全局注册keydown 13(ENTER键)的指令,该指令包含下一个代码:

 $document.bind("keydown keypress", function(event) {
                    if (event.which === 13) {
                       //do something
                    }
 }

如果将光标置于输入中并按Enter键,则在全局指令发生之前会触发ng-enter。有什么方法可以在控制器之前强制执行指令事件?

我尝试将优先级用于指令,但不是解决方案。

所有帮助将不胜感激。

史特纳

问题在于事件使DOM沸腾了。input事件将始终在document事件之前触发,因为该事件将始终冒泡。

如果希望首先触发文档事件,则可以指定希望它在捕获阶段运行(注意:如果IE8或更低版本,则不支持)。您可以在.addEventListener函数的第三个参数中指定事件捕获

function documentKeyEvent(event) {
    if (event.which === 13) {
        //do something
    }
}

$document[0].addEventListener("keydown", documentKeyEvent, true);
$document[0].addEventListener("keypress", documentKeyEvent, true);

Demo Here

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章