vue 结合elementUI 分页组件,后端一次性返回数据,前端做分页
1.template中
<el-pagination@size-change="handleSizeChange":page-sizes="[10, 20, 50, 100]"style="float:right"@current-change="currentChangeHandle":current-page="currentPage":page-size="pageSize":total="totalPage"layout="total, sizes,prev, pager, next, jumper">
</el-pagination>
数据
data(){return{totalPage:0, // 数据总条数currentPage:1, // 当前页面pageSize:10, // 当前页面显示条数dataList: [], // 页面展示数据tableData: [] // 后端获取的总数据}},
js从后端获取总数据
在这里插入代码片//获取初始数据
getDataList(){api.agentDealiyWMExport(this.dataForm).then(res=>{if(res.data.HEAD.CODE=='000'){this.totalPage=res.data.BODY.total;// 获取后端返回所有数据this.tableData=res.data.BODY.rows; // 对所有数据进行处理,截取数据前 n条数据,显示到页面上this.dataList=this.tableData.slice(0, this.pageSize)}})
},
改变页码
// val 是当前页数
currentChangeHandle (val) {this.currentPage=val;this.dataList = this.tableData.slice((val - 1) * this.pageSize, val * this.pageSize)
},
改变条数
// val每页显示多少条
handleSizeChange(val) {this.dataForm.pageSize=val;this.dataList = this.tableData.slice((this.currentPage - 1) * val, this.currentPage * val)
},
如果还要实现模糊查询(纯前端),主要思想是在请求到后端的数据后,再保存一份tem中间数据,用这个数据去做分页的size 和页码改变时的 数据。
如:
后端请求总数据,多保存一份
dataTables.value = res// 中间数据 分页相关逻辑使用temDataTables.value = res
在输入搜索词时
/** 输入搜索表关键词 */function handleKeywordInput(val){temDataTables.value = dataTables.value.filter(item=>{return item.tableName.includes(val)})apiTotal.value = temDataTables.value.lengthrenderApiTableData.value = temDataTables.value.slice(0,apiPageSize.value)}
renderApiTableData是渲染到表格的数据
分页相关事件
/** Api分页Size改变 */
function handleApiSizeChange(val){apiPageSize.value=val;renderApiTableData.value = temDataTables.value.slice((apiCurrentPage.value - 1) * val.value, val * apiCurrentPage.value)
}
/** Api分页页码改变 */
function handleApiCurrentChange(val){apiCurrentPage.value=val;renderApiTableData.value = temDataTables.value.slice((val - 1) * apiPageSize.value, val * apiPageSize.value)
}
参考链接:后端一次返回大量数据,前端做分页处理