为什么不调用我的Angular事件处理程序?

时间:2016-05-06 19:27:02

标签: javascript angularjs event-handling

在我的Angular 1.4.7应用程序的一个控制器中,我发起了这样的事件:

$rootScope.$broadcast('event:auth:login-finished');

然后在另一个控制器中,我尝试用

来听这个事件
$scope.$on('event:auth:login-finished', function () {
  console.debug('ROOT AUTH HANDLER CALLED');
});

出于某种原因,永远不会调用处理程序,即使事件肯定被触发,我做错了吗?

更新

我也尝试过听根范围

$rootScope.$on('event:auth:login-finished', function () {
  console.debug('ROOT AUTH HANDLER CALLED');
});

但这不会被称为

2 个答案:

答案 0 :(得分:0)

使用$rootScope.$on来抓住它。

关键是获得" root"。

答案 1 :(得分:0)

这取决于控制器之间的关系。调用$ broadcast会将事件触发到所有子范围。因此,如果$ on不在子控制器中,那么它就不会被激活。

将$ on放在rootScope上应该有效。

$rootScope.$on('event:auth:login-finished', function () {
  console.debug('ROOT AUTH HANDLER CALLED');
});