2014-03-31 53 views
0

我有一個node.js中,socket.io和角度的應用,在這裏我創建每當有人連接到服務器,並把它變成我的「用戶」陣列「用戶」對象中獲取的動態數據。 現在我想有角拿用戶和動態更新頁面,以顯示陣列。AngularJS:從Array

//users array contains all active user objects 
var users =[]; 

//user object (example) 
var exampleuser = { 
    name: "Hans", 
    clicks: 0, 
    lang: "German" 
} 

//index.html angular scope for all active users 
<table> 
    <thead> 
     <tr><th colspan="4">All online users</th></tr> 
    </thead> 
    <tbody> 
     <tr ng-repeat="user in UserList"> 
      <td>{{$index + 1}}</td> 
      <td><img src="./img/flags/{{user.lang}}.png" /></td>      
      <td>{{user.name}}</td> 
      <td>(clicks: {{user.clicks}})</td> 
     </tr> 
    </tbody> 
</table> 

那麼,如何做我必須配置我的角度控制,以獲得所有用戶提供數組「用戶」,並把它們放在一個角$範圍是什麼?由於

回答

1

你將不得不包裝你的用戶陣列和一個更新的角度服務(S)這裏面的數組,然後注入該服務爲您的控制器socket.io代碼。在控制器內部,您可以分配您的陣列,例如$scope.userList = yourService.users;

唯一的問題是您必須將您的服務用戶數組更新包裝到$apply中,以便Angular知道對數組的更改。這將是如此簡單:

... Inside your socket.io angular service 
function updateArray(newUser){ 
    $rootScope.$apply(function() { users.push(newUser); }; 
}; 
+0

嘿貝伊斯,感謝您的評論,但我並沒有真正得到這一切。在我的userController裏面我把$ scope.userList = yourService.users;我在哪裏創建我的服務,我的控制器在哪裏?在我的index.js中,我將調用「updateArray(newUser)?我不知道如何連接所有東西。 – Marc

+0

@Marc服務是Angular的核心組件之一,我建議你退後一步,角的概念再次,我建議先從教程http://docs.angularjs.org/tutorial和開發指南http://docs.angularjs.org/guide – Beyers

+0

我做的教程,但它沒有使用插座。 io和node.js.所以我唯一的問題是如何將一個對象從我的「服務器」添加到角度控制器,以便我的index.html頁面可以訪問這些信息。它已經在使用靜態輸入 – Marc