logo头像
Snippet 博客主题

记一次element-ui分页器遇到的问题

vue项目中用element-ui组件的pagination组件,有一个需求是在修改页面返回管理页面的时候仍保留在原来的页数,我的解决方案是通过路由间传参来保存页面状态;

但在实现过程中发现一个问题,每次返回到管理页面,表格组件停留在原来的页面,分页组件确总是回到第一页;

1
2
3
4
5
6
7
8
9
// element 分页器
<el-pagination
@current-change="handleCurrentChange"
:page-size="10"
:current-page="currentPage"
background
layout="total,prev, pager, next"
:total="total">
</el-pagination>

在网上看了很久才找到原因:

  • :total = "total", 总条数是通过后台请求获取的,刷新页面的时候,total 还没请求到,所以分页组件的的total等于0, 所以页码高亮默认是1。
  • 这时通过 this.currentPage = this.$route.params.currentPage 改变页码,因为总页数为 0 所以设置无效

解决方法有两种:

  1. total 初始化为 1000 或者其它比较大大的数字
  2. 加上 v-if: "total != 0" ,在获取total后再渲染组件
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <el-pagination
    v-if="total!=0"
    @current-change="handleCurrentChange"
    :page-size="10"
    :current-page="currentPage"
    background
    layout="total,prev, pager, next"
    :total="total">
    </el-pagination>

参考
参考