我最近开始学习AngularJS。所以,我尝试从控制器向另一个控制器发送消息。我看了很多例子,我的代码也是类似的,但是没有用。 为什么$ rootScope。$ on not work? 有人可以帮帮我吗?
HTML:
<div ng-controller="Ctrl">
{{message}}
<div ng-controller="Ctrl1">
<p>Ctrl1</p>
{{test}}
</div>
</div>
控制:
angular
.module("app")
.controller("Ctrl",["$rootScope","$scope",Ctrl]);
function Ctrl($rootScope,$scope){
var test = "Bla bla bla!";
$scope.message = test;
$rootScope.$broadcast('aaa', test);
}
CTRL1:
angular
.module("app")
.controller("Ctrl1",["$rootScope","$scope", Ctrl1]);
function Ctrl1($rootScope, $scope){
$rootScope.$on('aaa', function(event, args){
console.log("This message don't appear!");
$scope.test=args;
});
}
答案 0 :(得分:0)
它不起作用,因为父控制器Ctrl
将在Ctrl1
控制器加载之前进行注册。因此,事件$broadcast
事件内部控制器Ctrl1
列表器尚未注册。
您可以通过在父控制器的$ timeout函数中包含事件的$ broadcast来使其工作。因此它将在下一个摘要周期中等待评估。
$timeout(function(){
$rootScope.$broadcast('aaa', test);
})