0

我试图从这篇文章中获得提示 -使用 $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 永远不会收到广播事件,除非我将 CtrlB div 嵌套在 CtrlA div 中

任何想法?

4

1 回答 1

5

在不知道您尝试了什么的情况下很难回答。请参阅此 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';
});
于 2014-11-24T15:48:01.513 回答