Fork me on GitHub

Vue项目 封装Element-ui中的el-pagination作为公用分页组件

原因:分页在项目当中使用非常频繁,因此就将el-pagination封装为了一个全局组件

 

话不多说直接上代码

 

1.首先在components下面新建一个pagination.vue文件

代码如下:

查看代码
<template> <div :class="{ hidden: hidden }" class="pagination-container"> <el-pagination :background="background" :current-page.sync="currentPage" :page-sizes="pagesizes" :page-size.sync="pageSize" :pager-count="pagerCount" :layout="layout" :total="total" v-bind="$attrs" @size-change="handleSizeChange" @current-change="handleCurrentChange" ></el-pagination> </div> </template> <script> import { scrollTo } from '@/utils/scroll-to' export default { name: 'Pagination', data() { return {} }, props: { /** * 总页数 */ total: { required: true, type: Number }, /** * 默认当前页 */ page: { default: 1, type: Number }, /** * 默认分页大小 */ limit: { type: Number, default: 5 }, /** * 分页大小 */ pagesizes: { type: Array, default() { return [5, 10, 20, 30, 50, 100] } }, /** * 移动端页码按钮的数量端默认值5 */ pagerCount: { type: Number, default: document.body.clientWidth < 992 ? 5 : 7 }, /** * 布局方式 */ layout: { type: String, default: 'total, sizes, prev, pager, next, jumper' }, /** *是否显示背景 */ background: { type: Boolean, default: true }, /** * 自动滚动 */ autoScroll: { type: Boolean, default: true }, /** * 是否隐藏 */ hidden: { type: Boolean, default: false } }, computed: { /** * 当前页 */ currentPage: { get() { return this.page }, set(val) { this.$emit('update:page', val) } }, /** * 分页大小 */ pageSize: { get() { return this.limit }, set(val) { this.$emit('update:limit', val) } } }, methods: { handleSizeChange(val) { if (this.currentPage * val > this.total) { this.currentPage = 1 } this.$emit('pagination', { page: this.currentPage, limit: val }) if (this.autoScroll) { scrollTo(0, 800) } }, handleCurrentChange(val) { this.$emit('pagination', { page: val, limit: this.pageSize }) if (this.autoScroll) { scrollTo(0, 800) } } } } </script> <style scoped> .pagination-container { background: #fff; padding: 32px 16px; } .pagination-container.hidden { display: none; } </style>

 

2. 在main.js中我们需要引入,并将该组件注册为全局组件

查看代码
// 自定义分页组件 import Pagination from '@/components/Pagination' // 全局组件挂载 Vue.component('Pagination', Pagination)

 

3. 具体使用

查看代码
<!-- 分页 --> <Pagination @pagination="pagination" v-show="total > 0" :total="total" :page.sync="currentPage" :limit.sync="pageSize" />
<!--data中代码--> // 分页信息 currentPage: 1, pageSize: 5, total: 0,
<!-- methods中代码 --> /** * 请求分页 */ pagination(p) { this.fetchDataNoMessage(p.page, p.limit) },

 

思路来源

 


__EOF__

本文作者Hui Li
本文链接https://www.cnblogs.com/leedev-blog/p/16071060.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Hui_Li  阅读(788)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示