二次封装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项目每30秒刷新1次接口的实现方法

    vue项目每30秒刷新1次接口的实现方法

    在vue.js项目中,经常需要对数据实时更新——每隔xx秒需要刷新一次接口——即需要用到定时器相关原理。这篇文章主要介绍了vue项目每30秒刷新1次接口的实现方法,需要的朋友可以参考下
    2018-12-12
  • vue实现纯前端表格滚动分页加载

    vue实现纯前端表格滚动分页加载

    这篇文章主要为大家详细介绍了vue实现纯前端表格滚动分页加载,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • 详解Vue如何手写一个虚拟列表

    详解Vue如何手写一个虚拟列表

    虚拟列表是一种优化长列表渲染的技术,它可以在保持流畅性的同时,渲染大量的数据,本文主要介绍了如何使用vue手写一个虚拟列表,感兴趣的可以了解下
    2024-04-04
  • Vue表单预校验 validate方法不生效问题

    Vue表单预校验 validate方法不生效问题

    这篇文章主要介绍了Vue表单预校验 validate方法不生效问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • 十分钟带你读懂Vue中的过滤器

    十分钟带你读懂Vue中的过滤器

    过滤器提供给我们的一种数据处理方式。过滤器功能不是必须要使用的,因为它所实现的功能也能用计算属性或者函数调用的方式来实现。这篇文章主要为大家介绍了Vue中过滤器的使用,需要的可以了解一下
    2023-03-03
  • Vue集成lodop插件实现打印功能

    Vue集成lodop插件实现打印功能

    lodop 取意自“load or print”,是一款优秀的 Web 打印控件。本文将在Vue中集成lodop插件实现打印功能,感兴趣的小伙伴可以了解一下
    2023-01-01
  • Echarts+VUE柱状图绘制细节并且屏幕自适应完整代码

    Echarts+VUE柱状图绘制细节并且屏幕自适应完整代码

    柱状图(或称条形图)是一种通过柱形的长度来表现数据大小的一种常用图表类型,这篇文章主要给大家介绍了关于Echarts+VUE柱状图绘制细节并且屏幕自适应的相关资料,需要的朋友可以参考下
    2024-02-02
  • Vue前端vue.config.js简介

    Vue前端vue.config.js简介

    vue.config.js 是一个可选的配置文件,如果项目的 (和 package.json 同级的) 根目录中存在这个文件,那么它会被 @vue/cli-service 自动加载,本文重点介绍VUE前端vue.config.js简介,感兴趣的朋友跟随小编一起看看吧
    2023-01-01
  • vue项目环境搭建

    vue项目环境搭建

    这篇文章介绍了vue项目环境搭建的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • VUE3开箱即用的音频播放组件完整代码(基于原生audio)

    VUE3开箱即用的音频播放组件完整代码(基于原生audio)

    Vue3开箱即用的框架有很多选择,下面这篇文章主要介绍了VUE3开箱即用的音频播放组件(基于原生audio)的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-09-09

最新评论