【问题标题】:AngularJS: get dynamic data from ArrayAngularJS:从数组中获取动态数据
【发布时间】:2014-05-10 17:14:41
【问题描述】:

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

//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 控制器才能从数组“users”中获取所有用户并将它们放入 angular $scope 中?谢谢

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 嘿 Beyers,感谢您的评论,但我并没有真正了解所有这些。在我的 userController 我把 $scope.userList = yourService.users;以及我在哪里创建我的服务,以及我的控制器在哪里?在我的 index.js 中,我将调用“updateArray(newUser)?我不明白一切将如何连接。
    • @Marc 服务是 Angular 的核心组件之一。我建议你退后一步,重新回顾一下 Angular 的基本概念。我建议从教程docs.angularjs.org/tutorial 和开发者指南docs.angularjs.org/guide 开始
    • 我做了教程,但它没有使用socket.io和node.js。所以我唯一的问题是如何将一个对象从我的“服务器”添加到角度控制器,以便我的 index.html 页面可以访问这些信息。它已经在使用静态输入
    • 对于socket.io,你仍然需要一个客户端组件来监听来自服务器的更新,对吧?因此,socket.io 客户端代码需要位于 Angular 服务中,并且在您接收服务器数据的回调中,您将调用 updateArray 函数。这将导致 Angular 收到数组更改的通知,进而更新您的控制器数组和视图。
    • 好的,但是如何在我的 node.js/socket.io 服务器中调用 Angular 之外的 Angular 控制器类 (updateArray)?我的 index.html 上没有 ng-click 按钮,因为我想在用户连接时直接将用户添加到数组中,而不是使用 onclick。
    猜你喜欢
    • 2015-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    相关资源
    最近更新 更多