簡體   English   中英

$ broadcast未從服務中觸發(AngularJS)

[英]$broadcast not firing from a service (AngularJS)

我正在嘗試從$rootScope通過服務廣播消息,該消息是在Socket.io的消息上觸發的。 問題是,似乎$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. 您確定data.something和“來自套接字io的消息”是完全相同的字符串嗎?

  2. 這可能是時間問題嗎? 是否有可能在控制器注冊$on處理程序之前發送了消息?

  3. 該控制器是否在具有隔離范圍的指令內? 我不確定隔離范圍是否從$rootScope派生。

  4. $rootScope注入控制器並嘗試$rootScope.$on會發生什么? 這根本沒有必要,但可能有助於調試問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM