如何在angular 2中的类方法中访问ajax数据

时间:2016-06-13 12:17:48

标签: javascript angularjs ajax angular

我可以进行http调用以获取响应并访问block1中的数据。我无法在block1之外使用它。它说未定义。如何在block1之外使用响应数据。

this._demoService.get('/app/food.json').subscribe(
data => { //block1
          this.foods = data; 
          console.log(data);
       },

  err => {
    console.log('error '+err.status);
    console.log('success');

},
() => console.log('done loading ')
);
//block2

2 个答案:

答案 0 :(得分:1)

由于您的数据是异步接收的,因此您无法在this._demoService.get阻止后立即访问数据。我的意思是后者,所以当get方法返回数据时,那里......

请注意,Angular2提供了异步管道来帮助处理这种情况。您需要将observable设置为class属性而不是数据。

this.foods = this._demoService.get('/app/food.json');

并在模板中使用:

<div *ngFor="let food of foods | async">
  {{food.name}}
</div>

答案 1 :(得分:0)

这是预期的行为。当来自服务器的数据到达时执行block1,这可能需要一些时间。

block2立即执行。此时甚至没有启动对服务器的请求。

如果要在数据到达后执行代码,则需要在block1内移动代码。