2014-10-03 156 views
2

在我的应用程序中,我正在定义一个自定义事件,我希望其中有默认处理程序。如果任何控制器/服务想要重写默认处理,他们可以通过添加它们自己的处理程序来完成。Angular:自定义事件处理程序和默认处理程序的顺序

为了实现这种情况,我在$ 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

在我的情况下,由于事件处理程序可能跨越视图和控制器,指令的使用是不可能的。我最终为自定义事件创建了自己的自定义事件队列。 – Nilesh 2015-01-23 18:38:44