使用带有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
});
}
答案 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