vue使用element ui实现下拉列表分页的功能!!!

41665d768e934367ff2885eb7db21df4.png

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。

前几天做了个功能,需求是使用利用element ui如何给下拉列表分页,经过网上查找,自己摸索,已经完成,今天来记录一下吧。

实现的效果

2757f8c8847a33fd603b772cfeee1e95.png
image-20211103160459223

当时因为下拉框中的数据过多,所以想到使用分页的方式来实现。

现在来看看具体的实现吧。

准备分页的组件

分页组件的代码是从网上拼凑的,代码如下:

<template><el-select v-model="childSelectedValue":filterable="remote"multiple:loading="loading":remote="remote":size="size":remote-method="remoteMethod":clearable="clearable"@change="handleChange"@clear="handleClear"@focus="handleFocus":style="{width: '93%'}":placeholder="placeholder"><el-optionv-for="item in optionSource":key="item[valueKey]":label="item[labelKey]":value="item[valueKey]"></el-option><el-paginationsmalllayout="prev, pager, next"@current-change="changeNumber":hide-on-single-page="true":page-size="paginationOption.pageSize":current-page="paginationOption.currentPage":pager-count="paginationOption.pagerCount":total="paginationOption.total"></el-pagination></el-select>
</template><script>export default {name: 'PaginationSelect',props: {//此参数只是为了父组件实现 v-model指令接受参数用,子组件中无实际意义// 在子组件中通过监听childSelectedValue值,来触发 input 事件,实现子父组件数据绑定value:{type:String,default: ''},valueKey:{//传入的option数组中,要作为最终选择项的键值名称type:String},labelKey:{//传入的option数组中,要作为显示项的键值名称type:String},clearable	:{//是否支持清除,默认支持type:Boolean,default:true},remote:{//是否支持远程搜索,默认支持type:Boolean,default:false},size:{//组件尺寸,配置项同select  String | medium/small/minitype:String,default:'medium'},loading:{//远程数据加载状态显示type:Boolean,default:false},placeholder	:{type:String,default:'给谁用'},optionSource:{//下拉框组件数据源type:Array,required:true},paginationOption:{//分页配置项type:Object,default:function () {return {pageSize:5,//每页显示条数  6条刚好currentPage:1,//当前页pagerCount:5,//按钮数,超过时会折叠total:10 //总条数}}}},data () {return {childSelectedValue:this.value,}},watch:{//监听子组件中选择的值得变化,每当选择一个项后,触发input事件,// 将子组件中选择的值通过input事件传递给父组件,实现父组件中v-model绑定的值的双向绑定childSelectedValue(val){this.$emit("input",val);},value(val){if(val!=null && val.length<1){this.childSelectedValue = '';}}},mounted(){},methods:{//子组件分页器,页码选择事件,父组件中监听子组件的 pageNationChange 事件,获取当前页码changeNumber(val){//此处的val是页码this.$emit("pageNationChange",val);},// 远程调用方法,在父组件中实现远程方法remoteMethod(val){if(val!=null && val.length>0){//只有输入的字符串长度大于1时,触发this.$emit("remote-method",val);}else{this.childSelectedValue = ' '}},//使组件支持change事件handleChange(val){this.$emit("change",val);},//使组件支持clear事件handleClear(val){this.$emit("clear",val);},//解决远程搜索无结果时,显示清除按钮问题handleFocus(){if(this.childSelectedValue.length<1){this.childSelectedValue = ''}}}
}
</script><style scoped></style>

关键代码都有注释,所以这里就不过多解释。直接放到项目中即可使用,下面再来看看怎么使用。

父组件的写法

父组件中的代码,网上不全,基本上都是自己整理的,首先在需要写下拉列表的地方写:

<!--添加人员 --><el-form-item label="选择人员"  ><pagination-select@pageNationChange="pageNationChange"@change="getAthIdsAdd":optionSource="athListAllByLocal"v-model="fanganform.pbeizhu"labelKey="aname"valueKey="id":paginationOption="setSelectPage"></pagination-select></el-form-item>

pageNationChange为下拉列表分页的点击事件,执行的方法如下:

//下拉列表分页的点击的事件pageNationChange(val){//设置当前页为点击的页this.setSelectPage.currentPage = val;//重新调用分页查询的方法this.getAthListLocal(this.setSelectPage);},

change为下拉列表选项的改变事件,执行方法如下:

//获取下拉框中的运动员编号--保存方案getAthIdsAdd(val){var names = "";for(let i=0;i<=val.length-1;i++){this.athListAllPaged.find((item)=>{if(item.id === val[i]){names+=item.aname+",";}});}console.log(names);this.fanganform.ppersons = names;},

因为我需要把值和名称都存在数据库中,所以这里需要根据id来遍历一下name的值。

optionSource为下拉列表中的数据源。

paginationOption为分页的属性,代码如下:

//分页信息setSelectPage:{pageSize:6,//每页显示条数  3条刚好currentPage:1,//当前页pagerCount:5,//按钮数,超过时会折叠total:0 //总条数},

分页查询信息的代码如下:

//查询本地的运动员getAthListLocal(setSelectPage){getListAthPage(setSelectPage.currentPage,setSelectPage.pageSize).then(res => {const data = res.data.data;//下拉列表数据源绑定this.athListAllByLocal =data.records;//绑定总记录数this.setSelectPage.total = data.total;//if(this.athListAllPaged.length===0){this.athListAllPaged=data.records;}else {//追加数据for(let i = 0;i<data.records.length;i++){this.athListAllPaged.push(data.records[i]);}}});},

如果需要更改分页的的按钮数和页大小,可以直接修改setSelectPage中的pageSizepagerCount即可。

最后的效果就实现了。

363bd140777ad7937957d35ee3cdc131.png
image-20211103161711255

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

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

相关文章

ASP.NET Core 运行原理解剖[2]:Hosting补充之配置介绍

在上一章ASP.NET Core 运行原理解剖[1]:Hosting中&#xff0c;我们介绍了 ASP.NET Core 的启动过程&#xff0c;主要是对 WebHost 源码的探索。而本文则是对上文的一个补充&#xff0c;更加偏向于实战&#xff0c;详细的介绍一下我们在实际开发中需要对 Hosting 做一些配置时经…

汇编语言(三十五)之输入字符串以$结束然后输出字母个数

输入字符串以$结束然后输出字母个数 程序运行&#xff1a; 代码&#xff1a; datas segment buff db 100h dup(?)letter_count dw 0nextline db 0dh,0ah,$datas ends codes segment assume cs:codes,ds:datas main proc far push dsmov ax,0push ax mov ax,datasmov ds,ax…

vue中如何使用vi-for限制遍历的条数?只查询前三条、查询4-6条怎么实现?

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”前言今天整理个简单的功能&#xff0c;vue中的v-for如何限制遍历输出的数据&#xff0c;比如我想在一个存放10条数据的集合中只输出3条怎么写&#xff1f;只想从第四条开始输出到第10条…

编译原理(一)之词法分析

词法分析 (1)参考附录1设计一个简单语言的词法分析程序&#xff0c;要求能够处理注释、换行回车、部分复合运算符&#xff08;如>&#xff09;。 (2)设计并实现含多条简单赋值语句的语法分析程序&#xff0c;要求有一定的出错提示与错误恢复功能。 (参考附录2) 附录1:…

粗略使用.NetCore2.0自带授权登陆Authorize

上篇Linux.NetCoreNginx搭建集群 有朋友提及到如果nginx做集群后应该还会有下一篇文章主讲session控制&#xff0c;一般来说就是登陆&#xff1b;本篇分享的内容不是关于分布式session内容&#xff0c;而是netcore自带的授权Authorize&#xff0c;Authorize粗略的用法&#xff…

vue中如何在地图中标点…

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”前言昨天分享了下vue中v-for的一些特殊用法&#xff0c;料想标题给写成了vi-for…太粗心了。文章连接在这里&#xff1a;vue中如何使用v-for限制遍历的条数&#xff1f;只查询前三条、…

被黑客盯上了…数据都给打包带走了…

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”前言在创建数据库的时候&#xff0c;突然之间&#xff0c;发现创建的表通过select * from 表名 查询不到了&#xff0c;于是就开始检查是不是sql语句写错了&#xff0c;检查半天&#…

编译原理(二)之语法分析

采用实验1的简单语言&#xff0c;设计并实现含多条简单赋值语句的语法分析程序&#xff0c;要求采用算符优先的分析算法。 注意与实验1、2的衔接。 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using Syste…

ASP.Net Core Razor 页面路由

在服务器端 Web 应用程序框架中&#xff0c;其中非常重要的设计是开发人员如何将URL与服务器上的资源进行匹配&#xff0c;以便正确的处理请求。最简单的方法是将 URL 映射到磁盘上的物理文件&#xff0c;在 Razor 页面框架中&#xff0c;ASP.NET团队就是这样实现的。 关于 Ra…

vue实现下拉列表远程搜索示例(根据关键词模糊搜索)

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂”前言昨天的链接没有放上去……大家访问新站的时候&#xff0c;可以在浏览器地址栏中输入&#xff1a;www.穆雄雄.com或者www.muxiongxiong.cn都可以。今天分享的效果如下&#xff1a;ima…

编译原理(三)之语义分析

采用实验1的简单语言&#xff0c;设计并实现含多条简单赋值语句的语法语义分析程序&#xff0c;要求采用递归下降翻译法。 注意与实验1、2的衔接。 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.T…

活动: 北京Xamarin分享会第6期(2017年9月9日)

每月第二个周六&#xff0c;北京丹棱街5号微软大厦&#xff0c;有什么活动&#xff1f;对, BXUG线下分享活动又来啦! 本次分享嘉宾阵容庞大&#xff0c;在金秋凉爽的季节&#xff0c;期待与大家面对面的交流。内容预告&#xff1a; 案例分享&#xff1a;某大型国企IT项目如何采…

捡到东西说给钱才给东西?算不算敲诈勒索……

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂”前言前两天&#xff0c;将一个那天急要但是后来就不重要的东西&#xff0c;放在车筐里面&#xff0c;结果到目的地一看&#xff0c;没了……椅子还没坐热&#xff0c;有人打来电话了“你…

编译原理(四)之解析语言翻译成三地址代码

选择部分C语言的语法成分&#xff0c;设计其词法语法语义分析程序。 设计并实现一个一遍扫描的词法语法语义分析程序&#xff0c;将部分C语言的语法成分翻译成三地址代码&#xff0c;要求有一定的出错提示和错误恢复功能。 例如简单赋值语句&#xff1a; area3.14*a*a; s 2*…

[北京微软技术直通车]前端 Visual Studio Code 开发 Angular 与亿级 SQL Servern

微软技术直通车第一期将于2017年9月9日与大家见面&#xff0c;本次邀请华北区微软技术专家和大家一起交流前端工具与技术&#xff0c; Visual Studio Code&#xff0c;TypeScript 与 Anuglar 项目开发和亿级数据库运维的最佳实践&#xff0c;分享相关技术的发展前景和从业经验&…

vue中如何实现全全全屏和退出全屏?

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂”最近总有人给我说ta有社恐&#xff0c;明明是有社牛好不好……前言在做大屏界面的时候&#xff0c;客户有个要求&#xff0c;一进去登录成功之后&#xff0c;要有全屏的功能&#xff0c;…

【深圳】掌通宝科技有限公司技术总监(兼架构师),约吗

技术总监&#xff08;兼架构师&#xff09; 岗位职责&#xff1a; 1、主持研发中心日常管理工作&#xff0c;负责公司O2O平台,SaaS平台管理&#xff1b; 2、负责公司.net后台&#xff0c;Android客户端、IOS客户端、WEB平台等架构设计&#xff1b; 4、解决开发中的技术问题…

树层级处理上万条数据优化!

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”前言项目中&#xff0c;部门数超万&#xff0c;导致页面加载价卡顿怎么办&#xff1f;使用若依自带解析树的方法在本地运行没有任何问题&#xff0c;但是一发布到服务器上就显示加载超…

Orleans解决并发之痛(三):集群

Orleans本身的设计是一个分布式的框架&#xff0c;多个Silo构成集群&#xff0c;Grains分布在多个Silo中。一旦一个Silo挂了&#xff0c;原来归属这个Silo的Grains会自动在其他Silo中激活。生产环境下还是需要以集群方式来部署。 cluster 在Orleans解决并发之痛&#xff08;二…

avue中实现消息的实时展示

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。”前言一个功能写了大半天&#xff0c;主要是数据表设计的有点复杂&#xff0c;且这个项目是10月份就写的放那的&#xff0c;里面有些东西都忘记了……先看数据库结构&#xff0c;然后理…