![](/img/trans.png)
[英]AngularJS : pass data from controller to controller without factory, service or broadcast?
[英]$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);
});
問題出在哪兒?
這應該工作。 需要考慮的一些事情(有些可能很明顯,很抱歉):
您確定data.something
和“來自套接字io的消息”是完全相同的字符串嗎?
這可能是時間問題嗎? 是否有可能在控制器注冊$on
處理程序之前發送了消息?
該控制器是否在具有隔離范圍的指令內? 我不確定隔離范圍是否從$rootScope
派生。
將$rootScope
注入控制器並嘗試$rootScope.$on
會發生什么? 這根本沒有必要,但可能有助於調試問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.