最近做项目的时候,使用了element-ui的分页功能,简单记录一下前端代码是如何实现的:
目标效果:


<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage4"
:page-sizes="[100, 200, 300, 400]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="400">
</el-pagination>
把这段代码放在合适的位置,并修改其中的属性和事件处理函数,使之符合自己的预期:

把该组件的属性和自己data中的数据对应,这里对应的是queryInfo中的值
这些属性的作用是:
重点是修改两个事件处理函数:
// 监听页码改变的事件
handleCurrentChange(newPage){
this.queryInfo.pagenum = newPage
this.getUserList()
}

// 监听pagesize改变的事件
handleSizeChange(newSize){
this.queryInfo.pagesize = newSize
this.getUserList()
}
可见我们获得新的页码或者每页显示条数的时候,都要重新执行访问后台接口的那个方法 getUserLIst
因为此时的查询条件已经变了,我们要根据新的分页参数重新向后台请求数据:
async getUserList() { // 请求后台数据
const { data: res } = await this.$http.get('users', {
params: this.queryInfo
})
if ( res.meta.status !== 200) {
return this.$message.error('获取用户列表失败')
}
this.userlist =res.data.users
this.total = res.data.total
}
这是该后端接口的文档:
| 参数名 | 参数说明 | 备注 |
|---|---|---|
| query | 查询参数 | 可以为空 |
| pagenum | 当前页码 | 不能为空 |
| pagesize | 每页显示条数 | 不能为空 |
| 参数名 | 参数说明 | 备注 |
|---|---|---|
| totalpage | 总记录数 | |
| pagenum | 当前页码 | |
| users | 用户数据集合 |
{
"data": {
"totalpage": 5,
"pagenum": 4,
"users": [
{
"id": 25,
"username": "tige117",
"mobile": "18616358651",
"type": 1,
"email": "tige112@163.com",
"create_time": "2017-11-09T20:36:26.000Z",
"mg_state": true, // 当前用户的状态
"role_name": "炒鸡管理员"
}
]
},
"meta": {
"msg": "获取成功",
"status": 200
}
}