如何向 Angular 中没有父子关系的其他控制器广播和发出事件



我试图从这篇文章中获得提示 - 使用 $scope.$emit 和 $scope.$on 但是当控制器彼此没有任何关系时,似乎没有任何效果。

那是-

<div ng-controller="CtrlA">
</div>
<div ng-controller="CtrlB">
</div>

在 CtrlB 中,我会做这样的事情:

$rootScope.$broadcast('userHasLoggedIn', {})

在 CtrlA 中,我会这样听:

$rootScope.$on('userHasLoggedIn, function(event, data){});

否 - CtrlA 永远不会收到广播事件,除非我将 CtrlBdiv 嵌套在 CtrlAdiv 中

知道吗?

不知道你试过什么,很难回答。请看这个 plnkr:http://plnkr.co/edit/hYzWOrgEyPLlCMZnDCo2?p=preview

我基本上创建了两个控制器,一个向另一个发送一些文本:

app.controller('CtrlA', function($scope, $rootScope) {
  $scope.submit = function(){
    $rootScope.$broadcast('userHasLoggedIn', $scope.input);
  }
});
app.controller('CtrlB', function($scope) {
  $scope.$on('userHasLoggedIn', function(event, data){
    $scope.data = data; 
  });
  $scope.data = 'nothing';
});

最新更新