$ broadcast不从服务中解雇(AngularJS)

时间:2013-09-09 09:55:06

标签: javascript angularjs angularjs-scope

我正在尝试从来自Socket.io的消息触发的服务中广播来自$rootScope的消息。 问题是似乎$broadcast 未被触发被触发,但我的控制器中的$on未被触发。

我的代码如下:

factory("notifications", ["socket", "$rootScope", function(socket, $rootScope){
    return {

        socket.on("notification", function(data){

            $rootScope.$broadcast(data.something);

        }

    }
})

我的控制员:

controller('RandomCtrl', function($scope, $http, $location){

    function do_something(){

    }

    $scope.$on("some message from socket io", do_something);

});

问题出在哪里?

1 个答案:

答案 0 :(得分:6)

应该有效。有些事情要考虑(有些可能很明显,对不起):

  1. 您确定data.something和“套接字io中的某些消息”是完全相同的字符串吗?

  2. 这可能是时间问题吗?在控制器注册$on处理程序之前是否可能发送消息?

  3. 此控制器是否在具有隔离范围的指令中?我不确定隔离范围是否来自$rootScope

  4. $rootScope注入控制器并尝试使用$rootScope.$on时会发生什么?这根本不是必需的,但它可能有助于调试您的问题。