vue+element处理前端分页
需求:后台返回所有数据,前端实现分页效果。
由于数据量太大,加载很慢,页面也会造成卡顿现象,做成滚动条形式的不太合适
<div class="same-table"> <el-table :data="dataShow" border ref="recordTable" :header-cell-style="{textAlign: 'center'}" :cell-style="{ textAlign: 'center' }" style="width: 100%;" height="400"> <el-table-column prop="projectName" label="项目名称" fixed></el-table-column> </e-table> </div>
data(){ return { rightsList: [], totalPageData: [], //数组内套数组,每个数组就是一页数据 currentPage: 1, //当前显示页码 pageSize: 10, //每页显示的数量 pageNum: 1, //总页数 totals: 0, //总数量 dataShow: [], //当前要显示的数据 } }, created() { this.getSystemDataSource(); }, methods() { //获取本月数据来源具体信息 getSystemDataSource() { systemDataSourceApi.systemDataSource().then(res => { this.loginUser = res.result.loginUser; this.rightsList = res.result.pushData; this.totals = res.result.pushData.length; this.calcPageData(); }) }, //计算页数 calcPageData() { if (this.rightsList.length > 1) { this.pageNum = Math.ceil(this.rightsList.length / this.pageSize) || 1; console.log(this.pageNum, '总页数'); } for(let i = 0; i< this.pageNum; i++) { //每一页都是一个数组,根据每页显示数量 将后台的数据分割到 每一页,假设pageSize为10, 则第一页是1-10条,即slice(0,10) this.totalPageData[i] = this.rightsList.slice(this.pageSize * i, this.pageSize * (i+1)); } //获取到数据后显示第一页内容,数组下标是从0开始,所以要减1 this.dataShow = this.totalPageData[this.currentPage - 1]; console.log(this.rightsList, '要显示的数据') }, //每页显示的条数改变时候触发 handleSizeChange(newPageSize) { this.pageSize = newPageSize; this.calcPageData(); }, //当前页改变时候触发 handleCurrentChange(newPageSize) { this.currentPage = newPageSize; this.dataShow = this.totalPageData[newPageSize - 1]; } }