template
<el-table
:data="tableData"
v-loadmore="getData"
height="427"
style="width: 100%;margin-top:32px"
>
</el-table>
自定义指令
directives: {
loadmore: {
// 指令的定义
bind(el, binding, vnode) {
const selectWrap = el.querySelector(".el-table__body-wrapper");
selectWrap.addEventListener("scroll", function() {
const sign = 100;
const scrollDistance =
this.scrollHeight - this.scrollTop - this.clientHeight;
if (scrollDistance <= sign) {
binding.value();
vnode.context.getData();
}
});
}
}
},
方法
getAttendanc() {
axios({
url: "xxx",
method: "post",
data: {
pageNum: this.currentPage,
pageSize: 10
}
}).then(res => {
this.tableData.push(...res.data.data.list);
this.totalPage = res.data.data.pages;
this.flag = true;
});
},
getData() {
//当前页小于总页数时请求接口
if (this.flag === true){
this.flag = false;
if (this.currentPage < this.totalPage) {
this.currentPage++;
this.getAttendanc();
}
}
},