簡體   English   中英

從Angular工廠的Socket.io函數返回值

[英]Return value from Socket.io function in Angular factory

我有一個套接字工廠定義為在socket.on('user_entrance')data參數中返回一個來自服務器的數組。

.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 ,我像這樣注入對“ sockets factory”的依賴,但是返回未定義。

.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);

    })

我想在工廠中運行代碼,以便可以在其他控制器中訪問返回的值。如何使它工作?

注入工廠時,必須通過注入它的參數名稱來引用它:

.controller('ChatsCtrl', function($scope, Chats,sockets) {
   console.log(sockets);
})

暫無
暫無

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

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