【问题标题】:Angular 2 - iterating over json array inside a json objectAngular 2 - 迭代 json 对象内的 json 数组
【发布时间】:2016-03-22 18:39:58
【问题描述】:

我正在学习 Angular 2,我一直在使用静态数组,现在我正在尝试了解有关读取远程数据的更多信息。

我的app.component.ts

import {Component} from 'angular2/core';
import {Http, Response} from 'angular2/http';
import {Observable} from 'rxjs/Rx';

@Component({
  selector: 'my-app',
  template:`
  <h1>Angular2 HTTP Demo App</h1>
  <h2>Foods</h2>
  <ul>
    <li *ngFor="#doc of docs">{{doc.id}}</li>
  </ul>
  `
})
export class AppComponent {

  public foods;
  public books;
  public movies;

  constructor(private http: Http) { }

  ngOnInit() {
    this.getFoods();
  }

  getFoods() {
    this.http.get('http://my API URL')
      .map((res:Response) => res.json())
      .subscribe(
        data => { this.foods = data},
        err => console.error(err),
        () => console.log('done')
      );
  }

}

这是我的 API url 显示结果的方式:

  1. 一个名为“docs”的 json 对象。
  2. 带有 id 和其他字符串的项目的 json 数组。

我的目标是循环每个数组项并显示其中的数据(id、placeID 等)

这是我的应用程序,它根本没有迭代:

如何循环使用 *ngFor 每个 json 数组项?

【问题讨论】:

  • docs() 是做什么的?
  • 没什么,这只是我发现并尝试使用它的一些技巧。

标签: json angular


【解决方案1】:

Plunker

循环遍历数组:

<li *ngFor="let doc of docs">{{doc.id}}</li>

循环遍历对象属性:

您必须生成对象属性的Array

generateArray(obj){
   return Object.keys(obj).map((key)=>{ return obj[key]});
}

并像使用它

<li *ngFor="let doc of docs">
   <span *ngFor="let v of generateArray(doc)"> {{v}} </span>
</li>

或者你可以使用Pipe.

【讨论】:

  • 这就是我试图做的(从我的代码中删除了 ()),但它不起作用(根本没有迭代)。
  • 你能做一个现场演示吗?因为如果数据是正确的,就必须进行迭代。您获取docs 数据的方式一定有问题。
  • 我实际上需要上传哪些文件才能使应用程序在我的虚拟主机上运行?我一直在尝试上传所有目录和文件,大小约为 50-100MB i.imgur.com/sU9INQ5.png * 我已经用应用程序的运行屏幕截图更新了我的帖子*
  • 截图没有帮助。你不需要上传你的应用程序。您需要做的就是在Plunker 上创建一个包含迭代代码和数据的演示
  • 这对我有用!我能够遍历另一个列表中的列表。谢谢!
猜你喜欢
  • 2017-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-12
  • 2019-04-19
  • 2018-02-22
  • 1970-01-01
  • 2019-08-11
相关资源
最近更新 更多