Angularjs $rootScope.$在广播后未接到呼叫
我有两个控制器,希望通知一个控制器,另一个控制器发生了一些事件。为此,我尝试使用角度广播,但没有成功。请在下面找到我的代码: firstController.jsAngularjs $rootScope.$在广播后未接到呼叫,angularjs,Angularjs,我有两个控制器,希望通知一个控制器,另一个控制器发生了一些事件。为此,我尝试使用角度广播,但没有成功。请在下面找到我的代码: firstController.js $rootScope.$on('xyz',function(){ alert('Called'); }); $rootScope.$broadcast('xyz'); secondController.js $rootScope.$on('xyz',function(){ alert('Called');
$rootScope.$on('xyz',function(){
alert('Called');
});
$rootScope.$broadcast('xyz');
secondController.js
$rootScope.$on('xyz',function(){
alert('Called');
});
$rootScope.$broadcast('xyz');
有人能帮我找出我这里缺少什么吗?在firstController.js中使用$scope而不是$rootScope
$scope.$on('xyz', function(event, args) {
alert('Called')
});
使用以下任一组合:
$rootScope.$broadcast();
$scope.$on();
// or
$rootScope.$emit();
$rootScope.$on();
$broadcast
将事件向下分派到所有子作用域,因此您可以使用$scope
服务收听它
但是,$emit
通过作用域层次结构向上分派,并且由于$rootScope
是最高级别的,因此您可以使用$rootScope
分派和侦听同一事件。这在性能方面也要好得多,因为事件不会通过多个作用域向下传播 请看这里:
你能做一把小提琴再现这个问题吗?为什么不使用
$emit
?如果使用$rootScope
作为事件的通信通道,请使用$emit
。相当于,但要快得多。不,它无法解决问题$broadcast
与$emit
一样,在传播事件之前通知发送方。