从最后一页点击查询后,页面数据变为第一页的数据了,但是分页会显示2

其实这不算是个Bug,因为你从第十页开始查询,后台查询的数据就是第十页的内容,只是你的数据没有那么多条,所以你的页面会显示2,简单来说就是你从哪一页开始点击的查询,它传到后台查到的就是这一页的数据,但其实我们点击查询后是想让它从第一页开始显示的,

解决方法:使用v-if绑定数据,当每次搜索的时候就注销掉前一个分页Dom,画面刷新完毕后,渲染一个同样的分页,重新渲染必须放到$nextTick中,这样在使用分页就不会出现问题了。

(具体实现):

 <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :page-sizes="[10, 20, 30, 40]"
          :page-size="params.pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          :total="total"
          :current-page="page"
          v-if="pageshow"
        >
        </el-pagination>

data中的数据:

  // 分页
      params: {
        pageNum: 1,
        pageSize: 10,
      },
      page: 1,
      pageshow: true,
      total: 0,

methods中的方法:

 methods: {
    // 分页
    handleCurrentChange(val) {
      // console.log(`当前页: ${val}`);
      this.params.pageNum = val;
      this.getData();
    },
    handleSizeChange(val) {
      // console.log(`每页 ${val} 条`);
      this.params.pageSize = val;
      this.getData();
    }}
  //获取列表数据
    getData() {
      list(this.params, this.tbProcess) //获取数据
        .then((res) => {
          this.list = res.data.data;
          this.total = res.data.total;
        })
        .catch((err) => {
          console.log(err);
        });
    },
    //查询数据
    querys() {
      this.pageshow = false;
      this.params.pageNum = 1;  //把页码设置为1然后在发请求
      this.getData();
      this.$nextTick(() => {
        this.pageshow = true;
      });
    },

如上就可以解决了,(其实这是正常逻辑不是Bug哦)

GitHub 加速计划 / eleme / element
13
1
下载
A Vue.js 2.0 UI Toolkit for Web
最近提交(Master分支:19 天前 )
c345bb45 1 年前
a07f3a59 * Update transition.md * Update table.md * Update transition.md * Update table.md * Update transition.md * Update table.md * Update table.md * Update transition.md * Update popover.md 1 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐