vue的分页组件

这篇博客介绍了如何在Vue.js应用中使用el-pagination组件实现分页,并且展示了两种不同的事件处理方式:同步更新和单一事件处理。在数据变化时,通过监听total属性的变化,动态调整页面以展示最新数据。同时,提供了代码示例来说明如何在数据添加或删除后正确定位到新的数据位置。
摘要由CSDN通过智能技术生成
//1.如果给current-page,page-size,total绑定了.sync可以直接调用获取接口
          <el-pagination
            background
            :current-page.sync="params.page"
            //total,全部显示可以把总条数放到数组中
            :page-sizes="[3, 5, 10,total]"
            :page-size.sync="params.size"
            layout="total, sizes, prev, pager, next, jumper"
            :total="total"
            @size-change="GetSysUser()"
            @current-change="GetSysUser()"
            @prev-click="GetSysUser()"
            @next-click="GetSysUser()"
          />

<script>
export default {
  data() {
    return {
      params: {
        page: 1,
        size: 3
      },
      total: 0
    }
  },
  created() {
  //获取数据
    this.GetSysUser()
  },
  methods: {
    //调用接口获取渲染数据
    async GetSysUser() {
      const { data: res } = await GetSysUserAPI(this.params)
      this.list = res.rows
      this.total = res.total
    },
  }
}
</script>
//2.点击事件
 <el-pagination
            background
            :current-page="params.page"
            :page-sizes="[3, 5, 10,total]"
            :page-size="params.size"
            layout="total, sizes, prev, pager, next, jumper"
            :total="total"
            @size-change="paramsChange($event,0)"
            @current-change="paramsChange($event,1)"
            @prev-click="paramsChange($event,2)"
            @next-click="paramsChange($event,3)"
          />
<script>
export default {
  data() {
    return {
      params: {
        page: 1,
        size: 3
      },
      total: 0
    }
  },
  created() {
  //获取数据
    this.GetSysUser()
  },  
 methods: {
    //调用接口获取渲染数据
    async GetSysUser() {
      const { data: res } = await GetSysUserAPI(this.params)
      this.list = res.rows
      this.total = res.total
    },
    paramsChange(e,val){
    //e是你点击的页码/每页显示的数据,val是你点击的是哪个,你也可以设四个事件,我这边用一个事件来举例
     if(val===0){
     this.params.size=e
     }else {
     this.params.page=e
     }
     this.GetSysUser()
}
  }
}
</script>

//显示最新数据
 watch: {
  //监听总条数的变化
    total(newval, oldval) {
    //如果你的数据是添加/删除到最后你可以通过这段代码找到你添加的数据的位置
      //如果新值大于旧值就是添加,反之则是删除,
      //旧值不等于0是因为在刚开始获取的时候data中total: 0,可以排除获取数据
      //总条数模当前每页条数没有剩余就是跳转到最后一页,有剩余就跳转到最后一页+1
      //删除的时候总条数模当前每页条数没有剩余就跳转到最后一页-1
      总条数模当前每页条数有剩余就是跳转到最后一页就不动
      //给分页组件加一个ref=“”,internalPageCount就是总页数
      //this.$refs.pagination.internalPageCount就可以获取总页数
      //最后再从新渲染数据
      
    //简化版
      newval > oldval && oldval !== 0 ? (newval % this.params.pagesize !== 0 ? this.params.page = this.$refs.pagination.internalPageCount + 1 : this.params.page = this.$refs.pagination.internalPageCount) : (newval % this.params.pagesize === 0 ? this.params.page = this.$refs.pagination.internalPageCount - 1 : this.params.page = this.$refs.pagination.internalPageCount)
      this.GetSysRole()
      //简化之前
      // if (newval > oldval && oldval !== 0) {
      //   newval % this.params.pagesize !== 0 ? this.params.page = this.$refs.pagination.internalPageCount + 1 : this.params.page = this.$refs.pagination.internalPageCount
      //   this.GetSysRole()
      // } else if (newval < oldval && oldval !== 0) {
      //   newval % this.params.pagesize === 0 ? this.params.page = this.$refs.pagination.internalPageCount - 1 : this.params.page = this.$refs.pagination.internalPageCount
      //   this.GetSysRole()
      // }
    }
  }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值