后端一次性返回数据,前端分页
目录
后端一次性返回数据,前端分页
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.length
renderApiTableData.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)
}
参考链接: