ngoninit中没有构造函数的http结果

时间:2016-11-09 15:49:03

标签: jquery angular

使用带有jquery的angular2,我从API获得一个列表(有结果),但它没有绑定到jquery:

list: Array<any> = [];
constructor(public http: Http){
   // I can get result from api
   this.list = http.get(...) ...

   // If I just pass value to list, it works
   //this.list = [{"test":"hello"}];
}
ngOnInit() {
    // using Jquery function, but the this.list is empty?
    (<JQueryCustom>$("#textarea")).makeInput({
        source: this.list, 
        showAtCaret: true
    });
}

2 个答案:

答案 0 :(得分:0)

预期。

您需要将代码移至

http.get(...).subscribe(response => {
  // code that uses `response` goes here
});
在调用构造函数后直接执行

ngOnInit()。 对服务器的调用花费的时间与浏览器中的执行速度有关。对服务器的调用是异步的,并且最初仅调度到事件队列中以供稍后执行。 ngOnInit在同一&#34;事件&#34;。

内同步和处理

当来自服务器的响应到达时,调用传递给subscribe(...)的回调,这是响应可用的时候。

答案 1 :(得分:0)

试试这个:

constructor(public http: Http){

   http.get(url).subscribe(response => this.list = response)
}

现在列表将从api获取数据,list = http ...将无效。 我也使用响应,但你可以使用任何其他变量名。

构造函数是第一个加载的,但是不要像http请求那样在ngInit钩子中使用它来进行重载。

https://angular.io/docs/ts/latest/guide/lifecycle-hooks.html