自定义el-pagination分页

news2024/12/25 21:45:16

项目场景:

提示:这里简述项目相关背景:
vue项目使用el-ui库,由于原本的el-pagination显示字段和样式无法满足其他项目的设计要求,需要进行改动

el-ui官网:
在这里插入图片描述
改动后:
在这里插入图片描述


解决方案:

1、创建自定义分页组件
selfPagination.vue

<template>
	<div class="self-table-pagination">
    	<el-pagination
    	 background 
    	 layout="sizes,prev,pager,next,total,jumper" 
    	 :page-sizes="[10, 20, 30, 50, 100]"
      	 :page-size="pageSize" 
      	 :current-page="currentPage" 
      	 :total="total" 
      	 next-text="下一页 >" 
      	 prev-text="< 上一页"
      	 @size-change="handleSizeChange" 
      	 @current-change="handleCurrentChange">
    	</el-pagination>
	</div>
</template>
<script>
export default{
	props:{
		total:{//总页数
			type:Number,
			default:0
		},
		pageSize:{//页面显示条数
			type:Number,
			default:10
		},
		currentPage:{//当前页
			type:Number,
			default:1
		}
	},
	data(){
		return {
			pageObj:{
				total:0,
				pageSize:10,
				currentPage:1
			}
		}
	},
	watch:{
		total(n,o){
			this.pageObj.total = n;
			this.$nextTick(() => {
				var els = document.querySelectorAll(".self-table-pagination").length;
				var divJump = document.querySelectorAll(".el-pagination__jump");
				var divTotal = docment.querySelectorAll(".el-pagination__total");
				divJump[els - 1].childNodes[0].nodeValue = "跳至";
				divTotal[els - 1].innerHTML = "";
				divTotal[els - 1].innerHTML = '共<span class="page-total">' + n + '</span>条';
			})
		},
		pageSize(n,o){
			this.pageObj.pageSize = n;
		},
		currentPage(n,o){
			this.pageObj.currentPage = n;
		}
	},
	mounted(){
		var els = document.querySelectorAll(".self-table-pagination").length;
      	document.querySelectorAll(".el-pagination__jump")[els-1].childNodes[0].nodeValue = "跳至";
      	document.querySelectorAll(".el-pagination__total")[els-1].innerHTML = '共<span class="page-total">' + this.total + '</span>条';
	},
	methods:{
		handleSizeChange(val){
			this.pageObj.pageSize = val;
			this.$emit("changePage",this.pageObj);
		},
		handleCurrentChange(val){
			this.pageObj.currentPage = val;
			this.$emit('changePage',this.pageObj);
		}
	}
} 
</script>
<style lang="scss">
.self-table-pagination{
		/*“上一页”、“下一页”,非选中页数字样式*/
	  .btn-prev,.btn-next,.el-pager .number{
    	background-color:#fff!important;
    	border: 1px solid #CCD6DF!important;
    	border-radius: 5px!important;
  	   }
  	   /*选中页数字样式*/
  	  .el-pager .number.active{
    	background-color:#1E71FF!important;
  	  }
  	  /*按钮间距微调*/
  	  .btn-prev,.btn-next{
    	padding:0 10px!important;
  	  }
  	  .el-pagination__jump{
    	margin-left:0!important;
  	  }
  	  .el-pagination__total{
	    margin:0 9px 0 29px!important;
	   }
	   /*“共xx条”中间数字样式*/
      .page-total{
        color:#F8681A!important;
        min-width:30px!important;
      }
    }
	/*“xx条/页”、“跳至xx页”边框和文字样式*/
	  .el-pagination__sizes,.el-pagination__jump{
    .el-input__inner{
      color:#333;
      border: 1px solid #CCD6DF;
      border-radius: 5px!important;
    }
    /*修改“xx条/页”后下拉箭头图标*/
    i::before{
      content:'';
      position:absolute;
      width:20px;
      height:20px;
      background:url('../assets/pictures/pagination_select.png') center/100% 100% no-repeat;
      top:0;
      bottom:0;
      left:0;
      right:0;
      margin:auto;
    }
}
</style> 

2、使用自定义分页组件举例
tablePage.vue

<template>
	<div>
		...
		<self-pagination :total="total" :page-size="pageSize" :current-page="currentPage" @changePage="getCurrentData"></self-pagination>
	</div>
</template>
<script>
import SelfPagination from "@/components/SelfPagination";
export default {
	components:{SelfPagination},
	data(){
		return {
			total:0,
			pageSize:10,
			currentPage:1
		}
	},
	methods:{
		getCurrentData(data){
			this.total = data.total;
			this.pageSize = data.pageSize;
			this.currentPage = data.currentPage;
			this.getTableData();//从后台接口获取数据的方法,具体内容及传递参数根据实际开发要求编写
		},
		...
	}
}
</script>

踩坑记录:
1、在selfPagination.vue中,原先el-ui分页的“前往x页”要改成“跳至x页”,以及“共xx条”中样式文字的设置,最好在mounted中,预先初始化设置一下,防止接口数据加载前后显示不同。
2、在selfPagination.vue中,点击换页按钮和分页条数按钮需要给pageSizecurrentPage重新赋值(例:methods中两个方法)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/154747.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

golang字符串常见功能

文章目录1. 获取字符串长度2. 是否一xx开头3. 是否以xx结尾4. 是否包含5. 变大写6. 变小写7. 去两边8. 替换9. 分割10. 拼接11. string转换为int12. int转换为string13. 字符串和字节切片14. 字符串和rune切片15. string和字符1. 获取字符串长度 2. 是否一xx开头 3. 是否以xx结…

抖音seo优化排名

武汉微驱动科技有限公司 你有没有想过&#xff0c;同样是运营抖音&#xff0c;为什么别人的视频总是排在你的前面&#xff1f;你死磕创意&#xff0c;拍摄、剪辑&#xff0c;甚至比同行更投入&#xff0c;为什么他的收益总是高于你&#xff1f; 当下抖音搜索引擎的用户数量已经…

Nginx与LUA(1)

您好&#xff0c;我是湘王&#xff0c;这是我的CSDN博客&#xff0c;欢迎您来&#xff0c;欢迎您再来&#xff5e;HTTP服务器是相对于HTTP客户端来说的——HTTP客户端就是各种常用的「浏览器」&#xff0c;如IE、chrome、微信浏览器。当浏览器通过URL地址栏访问一个Web页面时&a…

【C++】STL六大组件之一——适配器(adapters)

目录1. 前言2. 初始适配器2.1 适配器的概念2.2 适配器的分类3. 容器适配器&#xff08;container adapters&#xff09;3.1 认识deque3.1.1 逻辑结构3.1.2 物理结构3.1.3 deque的迭代器3.1.4 选择deque做stack/queue底层容器的原因3.2 stack3.3 queue3.4 另一种容器适配器 ——…

阿里云计算巢 x GBase GCDW:自动化部署云原生数据仓库

近日&#xff0c;阿里云计算巢与天津南大通用数据技术股份有限公司&#xff08;以下简称&#xff1a;GBASE&#xff09;合作&#xff0c;双方融合各自技术优势&#xff0c;助力企业用户实现云上数据仓库的自动化部署&#xff0c;让用户在云端获取数据仓库服务“更简单”&#x…

【ESP32+freeRTOS学习笔记-(六)软件定时器】

目录1、软件定时器概念2、软件定时器的运行机制2.1 组成2.2 创建2.3 运行3、软件定时器的属性和状态3.1 定时器的周期3.2 定时器的类型3.3 定时器的状态4、软件定时器的回调函数原型5、定时器的使用5.1 创建定时器xTimeCreate()5.2 启动定时器xTimerStart()5.3 终止定时器xTime…

IPC进程间通信-system V 共享内存

&#x1f9f8;&#x1f9f8;&#x1f9f8;各位大佬大家好&#xff0c;我是猪皮兄弟&#x1f9f8;&#x1f9f8;&#x1f9f8; 文章目录一、共享内存原理二、共享内存的建立原理三、共享内存的创建四、共享内存的删除五、共享内存挂接到自己的地址空间六、从进程地址空间去掉与…

快过年了用Python抢红包

快过年了&#xff0c;刚刚收到了两个消息&#xff0c;一个好消息&#xff0c;一个坏消息。 先说好消息&#xff0c;好消息就是微信群里即将有人要发红包&#xff0c; 坏消息是我抢不上&#xff01; 难道就这么放弃了吗&#xff1f;那就只能试试能不能通过编程的方式实现自动化…

基于轻量级YOLOV5+BIFPN的苹果瑕疵检测识别分析系统

BIFPN是一种比较经典有效的特征融合手段&#xff0c;在很多检测模型中都有集成应用&#xff0c;实际表现也验证了BIFPN的有效性&#xff0c;这里并不是要探讨BIFPN的原理内容&#xff0c;而是想集成这项技术&#xff0c;提升原有模型的性能表现&#xff0c;在我之前的一些文章中…

排序算法之冒泡排序

一般学习过编程的人都知道&#xff0c;排序算法有很多种&#xff0c;包括直接选择排序、直接插入排序、计数排序、快速排序、归并排序、冒泡排序等&#xff0c;在我看来&#xff0c;以上六种排序算法是必须要掌握的&#xff0c;今天&#xff0c;我们先来讲解一下冒泡排序算法&a…

Java高手速成 | 新增类Record的工作实例

01、什么是Record? Record 是Java新增的库类&#xff0c;在Java 14和Java 15中以预览&#xff08;preview&#xff09;形式公布。Record类用来自动生成对定义数据进行创建、设置、访问以及比较等代码&#xff0c;所以又被称作数据类&#xff08;data class&#xff09;。在一…

初级开发者福音:手把手教你实现数字滚动效果~

文章目录一、前言二、背景知识三、实现方案Step 1&#xff1a;分析需求Step 2&#xff1a;实现单个数字的滚动效果Step 3&#xff1a;组件接口设计Step 4&#xff1a;完善组件一、前言 前端数字滚动显示的场景很多&#xff0c;比如抽奖的时候&#xff0c;营造一种马上公布中奖…

[MySQL从入门到实战环境部署](超详细版)

MySQL从入门到实战环境部署1.部署CentOS1.1部署CenOS虚拟机步骤&#xff08;1&#xff09;基于VirtualBox&#xff08;2&#xff09;下载CentOS1.2环境部署过程2.部署MySQL1.部署CentOS 1.1部署CenOS虚拟机步骤 &#xff08;1&#xff09;基于VirtualBox 下载网址&#xff1…

Docker Compose:Docker Compose部署nacos初始化MySQL

Docker Compose&#xff1a;Docker Compose部署nacos初始化MySQL找初始化sql文件nacos初始化mysql-schema.sql文件内容docker-compose.yml上传到挂载目录运行docker-compose.yml访问nacos找初始化sql文件 先去官网下载nacos安装包 官方github地址&#xff1a;https://github.…

Centos7安装opengauss

安装包下载地址&#xff1a;https://www.opengauss.org/zh/download/注&#xff1a;本文介绍的是轻量版安装先创建一个系统用户&#xff08;opengauss数据库不允许使用 root 用户安装&#xff09;创建用户useradd omm设置密码passwd omm将安装包拷贝并解压到用户家目录 ~/openG…

linux-云服务器数据盘挂载失败导致进入维护模式

已经在华为云、AWS上面吃过这个亏了&#xff0c;老这样可不好&#xff0c;心怦怦跳的。 华为云是由于服务器升级配置后重启&#xff0c;数据盘名称变化导致进入维护模式。AWS则是由于重启后没有挂载上数据盘&#xff0c;手动编辑/etc/fstab文件错误导致进入维护模式。 究其原…

2022年航空发动机行业研究报告

第一章 行业概况 航空发动机制造指主要用来产生拉力或推力使飞机前进的发动机设备。除了产生前进力外&#xff0c;还可以为飞机上的用电设备提供电力&#xff0c;为空调设备等用气设备提供气源。航空发动机制造产业链包括原材料研发、零部件生产制造、分系统和整机制造。 原材…

大智慧同花顺Level2行情数据有什么用

股市L2是大智慧Level2数据。由“上海证券交易所”最新推出的实时行情信息收费服务&#xff0c;主要提供在上海证券交易所上市交易的证券产品的实时交易数据。该行情速度比传统行情快3秒以上&#xff0c;同时包括十档行情、买卖队列、逐笔成交、总买总卖和统计信息等多种新式数据…

Fabric.js 拖放元素进画布

本文简介 点赞 关注 收藏 学会了 学习 Fabric.js&#xff0c;我的建议是看文档不如看 demo。 本文实现的功能&#xff1a;将元素拖进到画布中并生成对应的图形或图片。 效果如下图所示&#xff1a; 思路 要实现以上效果&#xff0c;需要考虑以下几点&#xff1a; 元素有…

婴儿游泳池行业市场经营管理及未来前景展望分析

2023-2029年中国婴儿游泳池行业市场经营管理及未来前景展望报告报告编号&#xff1a;1691316免费目录下载&#xff1a;http://www.cninfo360.com/yjbg/qthy/ly/20230109/1691316.html本报告著作权归博研咨询所有&#xff0c;未经书面许可&#xff0c;任何组织和个人不得以任何形…