我正在使用angular-js。我有一项服务,需要在每次发生某些事情时触发事件。为此,我需要一个将充当event aggregator
的对象。
$rootScope
? $rootScope
,如何确保没有事件名称冲突? $rootScope
用于不需要将其传播到子范围的事件是否有效? 最佳答案
我在平板电脑的网络项目中建模并实现了以下机制:
Device
服务,当更改平板电脑设备的方向时,该服务将为$broadcast(Device.Notification.OrientationDidChange)
。 Scope
对象来$broadcast
或$emit
通知。例如,$rootScope.$broadcast(Device.Notification.OrientationDidChange)
。因此,所有监听器都可以在自己的作用域上进行监听,而无需注入(inject)$rootScope
。 scope.$broadcast(UI.Notification.NeedsLayout)
,其中UI
是一个预定义的服务,用于保存与UI相关的常量,而scope
是当前作用域。 rangeStart
值已更改(除了常规的双向绑定(bind)之外),我使用:scope.$emit(Slider.Notification.RangeStartDidChange)
,其中scope
是当前范围。 $rootScope.$emit(Notification)
,并让所有监听器都执行$rootScope.$on(Notification, callback)
来接收这些通知。 strings
。 $broadcast
或$emit
,您实际上还可以将其他参数传递给监听器,例如$broadcast(Notification, arg1, arg2)
... Angular's documentation非常详细。 关于javascript - $ rootScope作为事件聚合器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17626586/