vue 封装element ui 分页组件 v-model方法使用

<template>
  <el-pagination
    @size-change="handleSizeChange"
    @current-change="handleCurrentChange"
    :current-page="page.pageNum"
    :page-sizes="pageSizes "
    :page-size="page.pageSize"
    :layout="layout"
    :total="page.total"
  >
  </el-pagination>
</template>

<script lang="ts">
import { Component, Vue, Prop, Watch } from 'vue-property-decorator'
@Component
export default class CPage extends Vue {
  @Prop({ default: 'total, sizes, prev, pager, next, jumper' })
  layout!: string

  @Prop({
    default: () => {
      return [10, 20, 30, 40, 50, 100]
    }
  })
  pageSizes!: number[]

  @Prop()
  value!: {
    pageSize: number,
    pageNum: number,
    total: number
  }

  @Watch('value', { immediate: true })
  handleChange () {
    this.page = this.value
  }

  page = {
    pageSize: 10,
    pageNum: 1,
    total: 0
  }

  handleInitData () {
    this.page.pageNum = 1
    this.handleSearch()
  }

  handleSizeChange (size: number) {
    this.page.pageSize = size
    this.page.pageNum = 1
    this.handleSearch()
  }

  handleCurrentChange (page: number) {
    this.page.pageNum = page
    this.handleSearch()
  }

  handleSearch () {
    this.$emit('input', this.page)
  }
}
</script>

<style scoped lang="scss">
</style>

<m-page v-model="page"/>
<script lang="ts">
import { Component, Vue, Prop } from 'vue-property-decorator'
@Component
export default class xxxx extends Vue {
 page = {
    pageSize: 10,
    pageNum: 1,
    total: 0
 }
}
</script>

直接调用就可以使用分页了,不用传参很多,十分方便,如果有更复杂的业务处理可以,自己加入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值