我定义了一个套接字工厂来返回data
socket.on('user_entrance')
参数中来自我的服务器的数组。
.factory('sockets',function(){
var user_name = window.prompt('enter your name');
var socket = io('http://localhost:3002');
var online_users = [];
socket.emit('user_name', user_name);
socket.on('user_entrance', function(data,my_id){
online_users.push(data);
});
return online_users;
})
并且在控制器中我想使用online_users
,我像这样注入“套接字工厂”的依赖,但是返回undefined。
.controller('ChatsCtrl', function($scope, Chats,sockets) {
//this is undefined
console.log(online_users);
})
然而,奇怪的是如果我在任何控制器中运行此代码它可以正常工作。
.controller('someCtrl',function(){
var user_name = window.prompt('enter your name');
var socket = io('http://localhost:3002');
var online_users = [];
socket.emit('user_name', user_name);
socket.on('user_entrance', function(data,my_id){
online_users.push(data);
});
//this works fine
console.log(online_users);
})
我想在工厂中运行代码,以便我可以访问其他控制器中返回的值。如何才能使其工作?
答案 0 :(得分:0)
注入工厂时,必须通过注入的参数名称引用它:
.controller('ChatsCtrl', function($scope, Chats,sockets) {
console.log(sockets);
})