Angularjs $rootScope.$在广播后未接到呼叫

Angularjs $rootScope.$在广播后未接到呼叫,angularjs,Angularjs,我有两个控制器,希望通知一个控制器,另一个控制器发生了一些事件。为此,我尝试使用角度广播,但没有成功。请在下面找到我的代码: firstController.js $rootScope.$on('xyz',function(){ alert('Called'); }); $rootScope.$broadcast('xyz'); secondController.js $rootScope.$on('xyz',function(){ alert('Called');

我有两个控制器,希望通知一个控制器,另一个控制器发生了一些事件。为此,我尝试使用角度广播,但没有成功。请在下面找到我的代码:

firstController.js

 $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
一样,在传播事件之前通知发送方。