Angular JS广播没有进入子范围

时间:2015-09-17 20:38:15

标签: javascript angularjs broadcast

请参阅 - 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");
});

1 个答案:

答案 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);
});