项目开发不需要分页,客户不想点来点去,想要表格数据全部显示出来,但是表格数据每次都有七八千条,界面根本加载不出来,经常卡死,把客户气得要死。
后台又不想写分页,说他数据请求的很快,只要一两秒,然后问题只能我来解决,只能写一个表格懒加载,代码如下:
this.allData = pos;//所有数据,将近一万条,pos是返回的数据
this.tabData = [];//定义个二维数组来存每页20条的数据
for (var i = 0, leng = this.allData.length; i < leng; i++) {
if (i % this.pageSize === 0) {//当前为20的倍数就添加一个数组
this.tabData.push(this.allData.slice(i, i + this.pageSize));
}
}
this.total = this.tabData.length;//数据总页数
this.tabList = this.tabData.length > 0 ? this.tabData[0] : [];
tableListener() {
let that = this;
let dom = that.$refs.tabList.bodyWrapper;
dom.addEventListener("scroll", function () {
const scrollDistance = dom.scrollHeight - dom.scrollTop - dom.clientHeight;
if (scrollDistance <= 0) {//等于0证明已经到底,可以将下一页添加到表格
if (that.currentPage < that.total) {//当前页数小于总页数就添加
that.currentPage++;//当前页数自增
//将下一页添加到表格数据
for (let i = 0, leng = that.tabData[that.currentPage-1].length; i < leng; i++)
{
that.tabList.push(that.tabData[that.currentPage-1][i]);
}
}
}
})
}