【问题标题】:How do I get data from a server for each element in an array in AngularJs如何从服务器获取AngularJs中数组中每个元素的数据
【发布时间】:2016-03-28 16:34:59
【问题描述】:

假设我有一个数组:

    var friendRequests=[
      {
      id:"Xyz",
      requester:"person 1"
      },
      {
      id:"Xyz2",
      requester:"person 2"
      }]

这个数组使用 ng-repeat="friendRequest in friendRequests" 在模板中迭代。同时,我想获取每个请求者的个人资料,以便在 ng-repeat 中的每个朋友请求中显示它。我是 Angular 新手,所以我无法弄清楚。

【问题讨论】:

  • 你能发布更多你的代码吗?特别是您在代码中获得 friendRequests 的值的位置。理想情况下,这将是您的控制器、路由或用于获取该数据的服务。
  • 不清楚你不确定哪一部分。将需要循环数据并对每个数据发出请求......或在服务器上重组数据以便发送您想要的内容
  • @charlietfl 是的,我需要遍历每个请求者 ID 并获取配置文件数据
  • 如果有可能,您可以事先获取所有用户的个人资料(取决于请求者的数量)
  • 再一次...你不清楚哪一部分?

标签: javascript arrays angularjs angularjs-scope angularjs-ng-repeat


【解决方案1】:

如果我没听错,那就很简单了:

<ul>
    <li ng-repeat="friendRequest in friendRequests">{{friendRequest.requester }}</li>
</ul>

在每次迭代中,范围将是您定义的对象(在本例中为 friendRequest),您可以像访问任何 javascript 对象一样访问其属性。

更新:

所以我知道您希望获取每个用户的配置文件并显示它,您需要做的是更改服务器响应以包含每个用户的配置文件,因此它看起来像这样:

    var friendRequests=[
      {
      id:"Xyz",
      requester:"person 1",
      profile: {name: 'user1 name' , avatar: 'http://some/url'}
      },
      {
      id:"Xyz2",
      requester:"person 2",
      profile: {name: 'user2 name', avatar: 'http://some/url'}
      }]

然后显示它:

     <ul>
        <li ng-repeat="friendRequest in friendRequests">
           <span>{{friendRequest.requester}}</span>
           <span>{{friendRequest.profile.name}}</span>
       </li>
    </ul>

【讨论】:

  • 是的,我知道现在我需要在单独的请求 (friendRequest.requester) 中获取每个请求者的个人资料并将其显示在同一个
  • 所以您想为每个用户发送另一个请求以获取他的个人资料?
  • 这是一个非常糟糕的主意,这意味着您将向您的服务器发送数十个甚至数百个请求。相反,您最好更改从服务器返回的响应以包含每个用户的配置文件
  • 我想出了一个办法,我在服务器级别添加了一个关系,我将它们全部抓取在一起。
  • 我明白你的意思,你尝试制作无限滚动之类的东西。看一下ngInfiniteScroll:sroze.github.io/ngInfiniteScroll我觉得可能对你有帮助
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签