Angular:自定义事件处理程序的顺序&默认处理程序

时间:2014-10-03 18:20:36

标签: javascript angularjs event-handling angularjs-scope

在我的应用程序中,我正在定义一个自定义事件,我希望它具有默认处理程序。如果任何控制器/服务想要覆盖默认处理,他们可以通过添加自己的处理程序来实现。

为了实现这个场景,我在$ rootScope&上添加了默认处理程序。在$ rootScope上播放该事件。我期待跟随工作。

//defined in .run block
$rootScope.$on('customEvent', defaultHandler);

//defined inside a controller
$scope.$on('customEvent', function customHandler(e){
    // handle event
    e.preventDefault();
});

我的问题是因为.run块在执行任何控制器之前执行,defaultHandler总是首先注册。结果,它首先被执行&然后执行自定义处理程序。我想在最后执行defaultHandler。

我想避免添加我自己的维护事件处理程序列表和逻​​辑的逻辑。确保它们按所需顺序执行。有没有办法实现这个角度?感谢。

1 个答案:

答案 0 :(得分:1)

唯一的优先概念'据我所知,角度来自于'指令'以及编译/链接的顺序。

执行此操作的黑客方法将放在该范围内的指令中的事件处理程序中,并按照表示您的顺序的任何优先级对它们进行排序。