二次封装element ui pagination组件方式

 更新时间:2025年11月22日 15:11:11   作者:活宝小娜  
文章总结了在Vue2中二次封装Element UI Pagination组件的过程,包括HTML、JS和CSS部分的代码示例,作者分享了个人经验,旨在为读者提供参考,并鼓励大家支持脚本之家

vue2中二次封装element ui pagination组件

html部分

<template>
    <div class="table-pagination">
        <el-pagination
        :current-page.sync="currentPage"
        :page-sizes="pageSizes"
        :page-size="pageSize"
        :layout="paginationLayout"
        :total="total"
        background
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        />
    </div>
</template>

js部分

<script>
export default {
    name: "DiyPagination",
    props: {
        // 分页配置
        pagination: {
            type: Object,
            default: null
        },
    },
    data() {
        return {
            currentPage: 1,
            pageSize: 10,
            total: 0,
            pageSizes: [10, 20, 50, 100],
            paginationLayout: 'total, sizes, prev, pager, next, jumper',
        };
    },
    watch: {
        // 监听分页配置变化
        pagination: {
            immediate: true,
            deep: true,
            handler(val) {
                if (val) {
                this.currentPage = val.currentPage || 1;
                this.pageSize = val.pageSize || 10;
                this.total = val.total || 0;
                this.pageSizes = val.pageSizes || [10, 20, 50, 100];
                this.paginationLayout = val.layout || 'total, sizes, prev, pager, next, jumper';
                }
            }
        }
    },
    methods: {
        // 处理分页大小变化
        handleSizeChange(size) {
            this.pageSize = size;
            this.$emit('pagination-change', {
                pageSize: size,
                currentPage: this.currentPage
            });
        },
        // 处理当前页变化
        handleCurrentChange(page) {
            this.currentPage = page;
            this.$emit('pagination-change', {
                pageSize: this.pageSize,
                currentPage: page
            });
        },
    }
}
</script>

css部分

.table-pagination {
    padding: 16px;
    display: flex;
    justify-content: flex-end;
    border-top: 1px solid #ebeef5;
    background-color: #fff;
}

在组件中使用

<template>
<DiyPagination
            :pagination="pagination"
            @pagination-change="paginationChange"
            ></DiyPagination>
</template>

<script>
import DiyPagination from "@/components/DiyPagination/index.vue"
export default {
  components: {
    DiyPagination
  },
  data() {
    return {
      pagination: { // 表格分页配置
        currentPage: 1,
        pageSize: 20,
        total: null,
        pageSizes: [20, 50, 100],
        layout: 'total, sizes, prev, pager, next, jumper',
       },
    }
  },
  methods: {
    paginationChange({pageSize, currentPage}) {
          this.pagination.currentPage = currentPage
          this.pagination.pageSize = pageSize
    },
  }
}
</script>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解如何在你的Vue项目配置vux

    详解如何在你的Vue项目配置vux

    这篇文章主要介绍了详解如何在你的Vue项目配置vux,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Vue3中父子组件之间相互通信的方式详解

    Vue3中父子组件之间相互通信的方式详解

    本文主要探讨了 Vue 3 中父子组件之间的通信方式,包括父传子,通过props传递数据和方法;子传父,用emit触发自定义事件并传递数据;还介绍了使用ref直接操作子组件实例,借助defineExpose暴露子组件的属性和方法给父组件,需要的朋友可以参考下
    2025-01-01
  • vue深度优先遍历多层数组对象方式(相当于多棵树、三级树)

    vue深度优先遍历多层数组对象方式(相当于多棵树、三级树)

    这篇文章主要介绍了vue深度优先遍历多层数组对象方式(相当于多棵树、三级树),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • 基于vue2框架的机器人自动回复mini-project实例代码

    基于vue2框架的机器人自动回复mini-project实例代码

    本篇文章主要介绍了基于vue2框架的机器人自动回复mini-project实例代码,具有一定的参考价值,有兴趣的可以了解一下
    2017-06-06
  • Vue中的 ref,props,mixin属性

    Vue中的 ref,props,mixin属性

    这篇文章主要介绍了Vue中的ref,props,mixin属性,文章围绕主题ref,props,mixin展开详细内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • 详解vue-cli脚手架中webpack配置方法

    详解vue-cli脚手架中webpack配置方法

    这篇文章主要介绍了详解vue-cli脚手架中webpack配置方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • element-plus 如何设置 el-date-picker 弹出框位置

    element-plus 如何设置 el-date-picker 弹出框位置

    el-date-picker 组件会自动根据空间范围进行选择比较好的弹出位置,但特定情况下,它自动计算出的弹出位置并不符合我们的实际需求,故需要我们手动设置,这篇文章主要介绍了element-plus 如何设置 el-date-picker 弹出框位置,需要的朋友可以参考下
    2024-07-07
  • vue移动端路由切换实例分析

    vue移动端路由切换实例分析

    本篇文章给大家分享了vue移动端路由切换实例以及相关知识点,对此有兴趣的朋友可以参考学习下。
    2018-05-05
  • vue.js input框之间赋值方法

    vue.js input框之间赋值方法

    今天小编就为大家分享一篇vue.js input框之间赋值方法具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • vue路由导航守卫和请求拦截以及基于node的token认证的方法

    vue路由导航守卫和请求拦截以及基于node的token认证的方法

    这篇文章主要介绍了vue路由导航守卫和请求拦截以及基于node的token认证的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04

最新评论