AngularJS:从Array获取动态数据

时间:2014-03-31 11:24:47

标签: arrays node.js angularjs scope socket.io

我有一个node.js,socket.io和angular应用程序,每当有人连接到服务器并将其放入我的“users”数组时,我就会创建一个“user”对象。 现在我希望有角度来获取用户并动态更新页面以显示数组。

//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>

那么我如何配置我的Angular控制器以便从阵列“用户”中获取所有用户并将它们放在角度$ scope中?感谢

1 个答案:

答案 0 :(得分:1)

您必须将您的users array和socket.io代码包装在角度服务中更新此数组,然后将此服务注入您的控制器。在您的控制器内,您可以分配您的阵列,例如$scope.userList = yourService.users;

唯一的问题是你必须在$apply中包装服务用户数组的更新,以便Angular知道对数组的更改。它将如此简单:

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