在我的应用程序中,我正在定义一个自定义事件,我希望为其设置默认处理程序。如果任何控制器/服务想要覆盖默认处理,它们可以通过添加自己的处理程序来实现。
为了实现这个场景,我在$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。
我想避免添加我自己的逻辑来维护事件处理程序列表&确保它们按所需顺序执行。有什么方法可以从角度实现这一点吗?谢谢
据我所知,angular中"优先级"的唯一概念来自"指令"以及它们的编译/链接顺序。
一种破解的方法是将事件处理程序放在该范围内的指令中,并根据表示排序的优先级对其进行排序。