Angular2 / Ionic2:在Listener中执行$ http.get

时间:2016-11-21 21:23:50

标签: javascript angular typescript ionic2

我正在尝试在滚动上获取数据并填充“文章[] ”数组。

httpLoadArticles() {
    this.httpWSGetInit().subscribe(
                                   articles => this.articles = articles,
                                    err => {
                                        console.log(err);
                                    },
                    () => console.log('Searching complete')
}

当前的功能。

httpWSGetInit() : Observable<Article []> {

    return this.http.get(R.WEBSITE_URL_WS + this.articlesPagination)
                         .map((res:Response) => res.json())
                         .catch((error:any) => Observable.throw(error.json().error || 'Server error'));
}

效果很好。

http.get方法永远不会调用addScrollListener方法。

@ViewChild(Content) content: Content;

ionViewDidLoad() {
        this.content.addScrollListener(this.onPageScroll);
}

onPageScroll(event) {
       this.httpLoadArticles()
}

我尝试将GET设置为synchronous但似乎没有改变任何内容。这是scope问题吗?像addScrollListener是一个纯JS方法,不能附加到angular2容器?

1 个答案:

答案 0 :(得分:3)

是的,这是一个范围问题。您应该使用箭头功能来保留此上下文

ionViewDidLoad() {
    this.content.addScrollListener(() => this.onPageScroll() );
}