ale*_*nst 2 javascript angularjs angularjs-scope
我正在尝试$rootScope从来自Socket.io的消息触发的服务广播消息.问题是,似乎$broadcast 没有解雇被解雇了,但我$on的控制器中没有触发.
我的代码看起来像:
factory("notifications", ["socket", "$rootScope", function(socket, $rootScope){
return {
socket.on("notification", function(data){
$rootScope.$broadcast(data.something);
}
}
})
Run Code Online (Sandbox Code Playgroud)
而我的控制器:
controller('RandomCtrl', function($scope, $http, $location){
function do_something(){
}
$scope.$on("some message from socket io", do_something);
});
Run Code Online (Sandbox Code Playgroud)
问题出在哪儿?
这应该工作.有些事情需要考虑(有些可能很明显,对不起):
你确定data.something并且"来自socket io的一些消息"是完全相同的字符串吗?
这可能是一个时间问题吗?是否有可能在控制器注册$on处理程序之前发送消息?
该控制器是否在具有隔离范围的指令内?我不确定隔离范围是否来自$rootScope.
当你注入$rootScope你的控制器并试着改变时会发生什么$rootScope.$on?这根本不是必需的,但它可能有助于调试您的问题.
| 归档时间: |
|
| 查看次数: |
5019 次 |
| 最近记录: |