Javascript AngularJS$broadcast$on
我最近开始学习AngularJS。因此,我尝试从一个控制器向另一个控制器发送消息。我看到了很多例子,我的代码也是类似的,但不起作用。 为什么$rootScope.$on不起作用? 有人能帮我吗 HTML: Ctrl1:Javascript AngularJS$broadcast$on,javascript,angularjs,broadcasting,Javascript,Angularjs,Broadcasting,我最近开始学习AngularJS。因此,我尝试从一个控制器向另一个控制器发送消息。我看到了很多例子,我的代码也是类似的,但不起作用。 为什么$rootScope.$on不起作用? 有人能帮我吗 HTML: Ctrl1: angular .module("app") .controller("Ctrl1",["$rootScope","$scope", Ctrl1]); function Ctrl1($rootScope, $scope){ $rootScope.$o
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;
});
}
它将不起作用,因为父控制器
Ctrl
将在Ctrl1
控制器加载之前获得寄存器。所以,虽然事件内部控制器Trl1还没有注册,但事件上的listner还没有注册
您可以通过将事件的$broadcast包装在父控制器的$timeout函数中来实现。所以它将等待在下一个摘要周期中得到评估
$timeout(function(){
$rootScope.$broadcast('aaa', test);
})
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;
});
}
$timeout(function(){
$rootScope.$broadcast('aaa', test);
})