vue使用element的el-table表格的懒加载
因为项目的数据,逻辑比较复杂,所以需要在表格加载出来做一个懒加载就是因为逻辑复杂,刚接手的项目维护有点麻烦,耽误很长时间,加上昨天对象来找我,没休息好,搞了半天,头昏脑胀的。 (主要是res的转换问题以及渲染问题)数据分析:此项目的 数据为用户画一个圆形,筛选出图形里面包含的数据,可能多,可能少,后台没有去进行分页处理,所以前端需要自行分页<--css样式--><el-table
·
因为项目的数据,逻辑比较复杂,所以需要在表格加载出来做一个懒加载
就是因为逻辑复杂,刚接手的项目维护有点麻烦,耽误很长时间,加上昨天对象来找我,没休息好,搞了半天,头昏脑胀的。 (主要是res的转换问题以及渲染问题)
数据分析:此项目的 数据为用户画一个圆形,筛选出图形里面包含的数据,可能多,可能少,后台没有去进行分页处理,所以前端需要自行分页
<-- css样式 -->
<el-table
v-loading="loading"
border
:data="data" //data为最终需要渲染的数据
:height="400"
size="small"
stripe
id="myTable"
ref="myTable" // ref 绑定一个名字
>
<el-table-column v-for="(item, i) in columns" :key="i" :label="item.label" :width="item.width" show-overflow-tooltip >
<template slot-scope="props">
<span>{{ props.row[item.prop] || '--' }}</span>
</template>
</el-table-column>
</el-table>
// js
data(){
return {
// 我定义这么多data是因为项目需要(在项目中不要用1234来定义,这只是为了方便)
dataAll:[],
// res请求的数据是数组包含对象,对象再包含对象
data: [],
data1:[],
data2:[],
classList:[],
// 分页操作
currentPage: 1,
pageSize: 20,
totalPage: 0,
}
},
mounted(){
// 初始化加载
this.initData()
},
methods:{
initData(){
let params = new FormData();
if (window.$app.searchType === 'ad') {
params.append('points',window.$app.points)
params.append('Type','ad')
}else
if (window.$app.searchType === 'ac') {
params.append('points',window.$app.points)
params.append('Type','ac')
}
this.$r.axios_post(api.Filter, params)
.then((response) => {
this.dataAll = Object.assign({}, response.data);
this.classList.one = this.dataAll.一班
// this.classList.two = this.dataAll.二班
// this.classList.third = this.dataAll.三班
// this.classList.four = this.dataAll.四班
// this.classList.five = this.dataAll.五班
// data1需要另外操作
this.data1 = this.classList.one
// 此data2为需要展示的长度,以及其他展示,小伙伴们可不要
// this.data2.length = this.dataAll.一班.length
// 定义一个变量 来存储20条数据
var infoList = []
if (this.data1.length > 20) {
this.data1.forEach((val ,i) => {
if (i < 20) {
infoList.push(val)
}
})
}
// 给data赋值,初始化只显示20条数据
this.data = infoList
// 将获取的数据进行分页处理
this.totalPage = this.data1.length / this.pageSize
// 判断
if (this.data1.length > 0) {
setTimeout(() => {
this.tableListener()
}, 1000);
}
})
.catch((err) => {
});
},
},
tableListener(){
let that = this;
// this.$refs.maTable.bodyWarpper
let dom = that.$refs.myTable.bodyWrapper;
// 添加scroll监听事件
dom.addEventListener("scroll", function ()
// scrollHeight-scrollTop-clientHeight=0 用来判断滚动条到底部
const scrollDistance =
dom.scrollHeight - dom.scrollTop - dom.clientHeight;
console.log("scroll", scrollDistance);
console.log(that.currentPage,that.totalPage,'that.currentPage < that.totalPage');
if (scrollDistance <= 0) {
if (that.currentPage < that.totalPage) {
that.currentPage++; //当前页数自增
var infoList = that.data1.splice(
(that.currentPage - 0) * that.pageSize,
that.pageSize
);
// 数据添加
that.data = that.data.concat(infoList);
}
}
});
},
}
更多推荐
已为社区贡献3条内容
所有评论(0)