Mat*_*nis 3 javascript angularjs
我正在使用$rootScope.$emit()并$rootScope.$on()在我的Angular应用程序中广播和监听状态更改.
在某些情况下,多个控制器都可以发出和侦听相同的事件.如果我在同一个控制器中有以下代码,那么这个控制器.$on在发出事件时运行它的代码,或者该事件只向其他控制器广播?
$rootScope.$emit('adminChanged');
...
$rootScope.$on('adminChanged', function() {
getCustomerInfo();
});
Run Code Online (Sandbox Code Playgroud)
dol*_*ldt 10
请参阅角度文档以获得答案:( 强调我的)
在$ emit:
$ emit(name,args); 通过范围层次结构向上调度事件名称,通知已注册的$ rootScope.Scope侦听器.
事件生命周期从调用$ emit的范围开始.监听此范围内的名称事件的所有侦听器都会收到通知.之后,事件向上遍历根范围并沿途调用所有已注册的侦听器.如果其中一个侦听器取消它,该事件将停止传播.
在$ broadcast:
$ broadcast(name,args); 向下调度事件名称到所有子范围(及其子级),通知已注册的$ rootScope.Scope侦听器.
事件生命周期从调用$ broadcast的范围开始.监听此范围内的名称事件的所有侦听器都会收到通知.然后,事件将传播到当前作用域的所有直接和间接作用域,并在此过程中调用所有已注册的侦听器.该活动无法取消.
(另外,heed rob关于使用哪一个的评论!)