Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS:$broadcast from service不总是调用子控制器上的侦听器_Angularjs - Fatal编程技术网

AngularJS:$broadcast from service不总是调用子控制器上的侦听器

AngularJS:$broadcast from service不总是调用子控制器上的侦听器,angularjs,Angularjs,我有一个与我的服务器连接的服务,在我获得数据后,我会广播事件: user.getUserData = function () { var userData = $http.get('/user'); userData.success(function (data) { currentUser = data $rootScope.$broadcast(

我有一个与我的服务器连接的服务,在我获得数据后,我会广播事件:

 user.getUserData = function () {
                var userData = $http.get('/user');

                userData.success(function (data) {
                    currentUser = data
                    $rootScope.$broadcast(EVENTS.userChanged);
                });

                userData.error(function () {
                    user.removeUser();
                });

                return userData;
            };
我在body标签上还设置了一个主控制器和几个子控制器。在那上面我有

$rootScope.$on(EVENTS.userChanged, function () {});

每次我刷新应用程序时,主控制器上的这个函数都会被调用,但子控制器上的这个函数有时才被调用。有什么问题吗?

可能过早触发
$broadcast
,子控制器尚未初始化。您需要显示更多代码。很可能是您的路由设置,以及您的子控制器的实例化位置。我认为@runTarm是正确的,但是我可以做些什么来确保我的子控制器已初始化?我不确定,但您不应该在各自的作用域上放置。$而不是$rootScope?您从$rootScope广播事件,它会向下发送事件,但我不确定在$rootScope上如何处理此类事件。我已经在我的应用程序中的rootScope上设置了广播,然后我在各自的范围内处理事件(.$on()),我从未注意到任何问题。。。