二次封装分页组件

二次封装分页组件

<template>
  <el-pagination
   class="app-pagination"
   :background="background"
   :current-page="normalizedPageNum"
   :page-size="normalizedPageSize"
   :page-sizes="$attrs['page-sizes']||[10,20,30,40,50]"
   :layout="$attrs.layout||'total,prev,pager,next,sizes'"
   v-bind="$attrs"
   @size-change="onSizeChange"
   @current-change="onCurrentChange"
   v-on="$listeners"
  />
</template>
<script>
const EVENT_CHANGE='change'
const EVENT_UPDATE_CURRENT_PAGE='updata:pageNum'
const EVENT_UPDATE_PAGE_SIZE='updata:pageSize'

export default {
  name:'AppPagination',
  props:{
    background:{
      type:Boolean,
      default:false
    },
    pageNum:{
      type:Number,
      default:1
    },
    pageSize:{
      type:Number,
      default:20
    },
    updateRouteOnChange:{
      type:Boolean,
      default:true
    }
  },
 
  computed:{
    normalizedPageNum(){
      let {pageNum}=this
      if(this.updateRouteOnChange&&this.$route.query.pageNum){
        pageNum=Number(this.$route.query.pageNum)||pageNum
      }
      return pageNum
    },
    normalizedPageSize(){
      let {pageSize}=this
      if(this.updateRouteOnChange&&this.$route.query.pageSize){
        pageSize=Number(this.$route.query.pageSize)||pageSize
      }
      return pageSize
    }
  },
  methods: { 
    onCurrentChange(value){
      this.$emit(EVENT_UPDATE_CURRENT_PAGE,value)
      this.$emit(EVENT_CHANGE,{
        pageNum:value,
        pageSize:this.normalizedPageSize
      })
    },
    onSizeChange(value){
    this.$emit(EVENT_UPDATE_CURRENT_PAGE,1)
    this.$emit(EVENT_UPDATE_PAGE_SIZE,value)
    this.$emit(EVENT_CHANGE,{
      pageNum:1,
      pageSize:value
     })
    }
  }
}
</script>
<style lang="less" scoped>
  .app-pagination{
    display:flex;
    justify-content:flex-end;
  }
</style>


      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值