如何禁用在 ngx-datatable 中滚动时调用的 'page' 输出事件?
How to disable 'page' Output event being called on Scroll in ngx-datatable?
我不想无限滚动分页。相反,我只想通过单击页脚中的页码来调用分页。我正在使用服务器端分页。因此,在每次滚动时触发 'page' 事件会导致我的分页 api 触发太多我的服务器无法处理的请求。
基本上如何禁用服务器端分页的无限滚动?
我能够通过处理 ngx-datatable 中的(滚动)输出来解决这个问题。这个想法是在调用滚动事件时使用一个标志来抑制分页,然后在超时后再次启用它。像这样。
模板
<ngx-datatable (page)="doPaging($event)" (scroll)="handleScroll()">...</ngx-datatable>
在你的组件中
scrollTimeout: any;
suppressPaging: boolean = false;
doPagining() {
if (!this.suppressPagining) {
//do paging
}
}
handleScroll() {
this.suppressPagining = true;
if (this.scrollTimeout) {
celarTimeout(this.scrollTimeout);
}
this.scrollTimeout = setTimeout(() => {
this.suppressPagining = false;
}, 100)
}
[虚拟化]="false" 解决了我的问题
我不想无限滚动分页。相反,我只想通过单击页脚中的页码来调用分页。我正在使用服务器端分页。因此,在每次滚动时触发 'page' 事件会导致我的分页 api 触发太多我的服务器无法处理的请求。
基本上如何禁用服务器端分页的无限滚动?
我能够通过处理 ngx-datatable 中的(滚动)输出来解决这个问题。这个想法是在调用滚动事件时使用一个标志来抑制分页,然后在超时后再次启用它。像这样。
模板
<ngx-datatable (page)="doPaging($event)" (scroll)="handleScroll()">...</ngx-datatable>
在你的组件中
scrollTimeout: any;
suppressPaging: boolean = false;
doPagining() {
if (!this.suppressPagining) {
//do paging
}
}
handleScroll() {
this.suppressPagining = true;
if (this.scrollTimeout) {
celarTimeout(this.scrollTimeout);
}
this.scrollTimeout = setTimeout(() => {
this.suppressPagining = false;
}, 100)
}
[虚拟化]="false" 解决了我的问题