请参阅 - http://jsfiddle.net/U3pVM/18701/
在控制台中,我只看到“outer1”被记录,内部范围不记录。缺少什么?
var app = angular.module("myapp", []);
app.controller("outer1", function($scope) {
$scope.$on("newmessage", function() {
console.log("outer1");
});
$scope.$broadcast("newmessage");
});
答案 0 :(得分:1)
这是一个时间问题 - 在父母已经解雇了$ broadcast之后孩子们被初始化了。如果您使用$broadcast
延迟$timeout
,孩子们将收到该活动(update fiddle):
app.controller("outer1", function($scope, $timeout) {
$scope.$on("newmessage", function() {
console.log("outer1");
});
$timeout(function() { // delay $broadcast using $timeout
$scope.$broadcast("newmessage");
}, 0);
});