滚动

时间:2016-10-13 08:26:08

标签: angular lazy-loading

如何创建真正的延迟加载?问题是下一个: 我在滚动上创建了延迟加载。我在scroll fires事件上使用无限滚动,我得到下一页并在第1页上使用数组连接。但我认为这不正确,因为我增加阵列。请帮忙如何在不增加数组的情况下创建延迟加载?

onScroll() {
    var inOrOut = this.selectedType.inOrOut == 'incoming' ? 1 : 0;
    if(this.selectedType.page.page !== false) {
        this.selectedType.page.page = this.selectedType.page.page + 1;
        this.getMessagesForPage();
    }
}

getMessagesForPage() {
    var self = this;

    this.messageSmsService
        .getMessagesForPage(this.page)
        .subscribe(
            result => {
                self.allData[ self.selectedType.type].push(result);
            },
            error => {...})
}

1 个答案:

答案 0 :(得分:0)

virtual-scroll。这不是浏览器(Windows)滚动。根本的区别是根据请求重写html。通常滚动绘制所有html,而虚拟滚动可见部分。

添加模板。

 <virtual-scroller 
            [items]="buffer"
            (vsUpdate)="scrollItems = $event"
            (vsEnd)="getMessagesForPage($event)">

            <div *ngFor="let item of scrollItems"> </div>

 </virtual-scroller>

vsEnd-是达到“欠量”的事件。

getMessagesForPage进行了更改。

public getMessagesForPage(event: ChangeEvent) {
  if (event.end !== this.buffer.length-1) return;

  this.getData(this.buffer.length, 10)
      .subscribe(
         result => this.buffer = this.buffer.concat(result)
       )
    }

我要添加缓冲元素,但我不会将所有html都绘制到滚动