【发布时间】:2015-01-17 00:46:10
【问题描述】:
我正在尝试从这篇文章中获得提示 - Working with $scope.$emit and $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 中
有什么想法吗?
【问题讨论】:
-
$broadcast 发生时可能没有加载 CtrlA。
-
在 CtrlA 中你应该做
$scope.$on因为$scope是来自$rootScope的子范围 -
@Chandermani CtrlA 肯定已加载,我发出警报并触发它。 Joao - 那也行不通。但你是说它应该可以工作吗?
-
您的代码应该可以正常工作。这是working demo。下次先创建 jsfiddle/codepen 以更好地展示您的问题。
-
@David:你确定在广播发生之前加载了CtrlA吗?看起来你的代码应该可以工作。
标签: angularjs angular-services angular-broadcast