我试图从这篇文章中获得提示 - 使用 $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';
});