gpt4 book ai didi

javascript - $broadcast 不从服务中触发 (AngularJS)

转载 作者:行者123 更新时间:2023-11-29 16:14:40 27 4
gpt4 key购买 nike

我正在尝试从服务中广播来自 $rootScope 的消息,该服务在来自 Socket.io 的消息上触发。问题是似乎 $broadcast isn't fired 被触发了,但是我的 Controller 中的 $on 没有被触发。

我的代码如下:

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

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

$rootScope.$broadcast(data.something);

}

}
})

还有我的 Controller :

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

function do_something(){

}

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

});

问题出在哪里?

最佳答案

应该 工作。需要考虑的一些事项(有些可能是显而易见的,抱歉):

  1. 您确定 data.something 和“some message from socket io”是完全相同的字符串吗?

  2. 这会不会是时间问题?是否有可能在 Controller 注册 $on 处理程序之前发送消息?

  3. 这个 Controller 是否在具有隔离作用域的指令中?我不确定隔离作用域是否派生自 $rootScope

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

关于javascript - $broadcast 不从服务中触发 (AngularJS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18695699/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com