一、表格的无限滚动
function tableScroll() {
nextTick(() => {
let dom = document.querySelector('.el-table__body-wrapper') as any;
dom.addEventListener('scroll', () => {
const scrollDistance = dom.scrollHeight - dom.scrollTop - dom.clientHeight;
if (scrollDistance <= 1) {
if (state.tableData.length >= state.total) {
console.log('加载完了');
} else {
state.currentPage++;
let a = state.listAllData.slice((state.currentPage - 1) * state.pageSize, state.currentPage * state.pageSize);
state.tableData = [...state.tableData, ...a];
}
}
});
});
}
onMounted(() => {
tableScroll();
});
二、列表的无限滚动
<div
v-infinite-scroll="load"
:infinite-scroll-disabled="disabled"
style="height: calc(100% - 10px);overflow: auto"
>
<div v-for="item in tableData" :key="item.elementId">
<div class="titleElement">
<i class="el-icon-document"></i>
{{ item.elementName }}
</div>
</div>
<p v-if="dataLoading" style="text-align: center">加载中...</p>
<p v-if="noMore" style="text-align: center">没有更多了~</p>
</div>
const noMore: Ref = computed(() => {
return state.tableData.length >= state.total;
});
const disabled: Ref = computed(() => {
return state.dataLoading || noMore.value;
});
function load() {
state.dataLoading = true;
setTimeout(() => {
if (state.tableData.length < state.total) {
state.currentPage++;
let a = state.listAllData.slice((state.currentPage - 1) * state.pageSize, state.currentPage * state.pageSize);
state.tableData = [...state.tableData, ...a];
state.dataLoading = false;
}
}, 400);
}