如何创建真正的延迟加载?问题是下一个: 我在滚动上创建了延迟加载。我在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 => {...})
}
答案 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都绘制到滚动