当前位置: 首页 > news >正文

elementUI的select下拉框如何下拉加载数据?

前言

相信大家都遇到过一个问题,select下拉选项数据特别多,要设置为分页,那么前端如何弄成下拉加载数据呢?来看看我是怎么弄的吧。

先来看看效果

template代码

<el-select v-model="formDataModel[item.key]":placeholder="'请选择' + item.label"filterable remote clearable:remote-method="remoteMethod"@clear="handleClear"@blur="handleBlur"><divclass="options"v-infinite-scroll="load":infinite-scroll-disabled="disabled"v-loading="isLoading"><el-option v-for="(item, index) in options":key="index":label="item.name":value="`${item.name}-${item.id}`"></el-option><pclass="load-text"v-if="loading">加载中...</p><pclass="load-text"v-if="noMore">没有更多了</p></div></el-select>

js代码

// 弹框组件是否显示@Prop({type:Boolean,default:false})isShow!:boolean;@Watch('isShow',{immediate:true})handleShowChange(val:boolean){if(val){this.keyword='';this.pageIndex=1;this.getOptions();}}// 清空选项publichandleClear(){this.remoteMethod('');}// 处理失去焦点publichandleBlur(){setTimeout(()=>{if(!this.formDataRef.formDataModel.VBIFieldName){this.remoteMethod('');}},500);}//#region 下拉加载开始publicpageIndex=1;publicoptions:any[]=[];publicloading=false;// 总数publictotal=0;getnoMore(){returnthis.options.length>=this.total;}getdisabled(){returnthis.loading||this.noMore;}publicasyncload(){this.pageIndex+=1;this.getVBIFieldNameOptions();}//#endregion 下拉加载结束publickeyword='';publicisLoading=false;//获取选项publicasyncgetOptions(){if(this.pageIndex===1){// 搜索loadingthis.isLoading=true;}else{// 下拉加载loadingthis.loading=true;}try{letfetchApi:any;letparamsData={pageIndex:this.pageIndex,pageSize:10,name:this.keyword};const{data:{data:{records,total}}}=awaitfetchApi(paramsData);letlist=records??[];if(this.pageIndex===1){this.options=list;}else{this.options=[...this.options,...list];}this.total=total;}finally{if(this.pageIndex===1){// 搜索loadingthis.isLoading=false;}else{// 下拉加载loadingthis.loading=false;}}}// 根据输入框的值远程查询publicasyncremoteMethod(query:string){this.pageIndex=1;this.keyword=query;this.getVBIFieldNameOptions();}

css代码

.options{.load-text{margin:0;text-align:center;color:#999;font-size:12px;}}

结语

大家可以参考一下实现逻辑,代码可能不能直接使用。

关注我,不迷路。
不定时分享前端相关问题以及解决方案。
希望能帮助每个在开发类似功能的小伙伴。

http://www.cnnetsun.cn/news/182804.html

相关文章:

  • 5步彻底解决TranslucentTB安装失败:从诊断到完美运行全攻略
  • 教你使用服务器搭建一款基于 Rust 开发的跨平台文件管理器 Spacedrive
  • 深度拆解人机协同三大架构设计,教你打造高可用交互系统
  • 解放Dell G15散热潜能:轻量级开源控制中心完全指南
  • 为什么99%的团队在Open-AutoGLM部署上失败?真相令人震惊
  • 智慧树学习助手:自动化网课管理解决方案
  • B站视频转文字工具:3分钟实现智能内容提取的完整指南
  • Blender3mfFormat插件:3D打印工作流的智能升级指南
  • Blender 3MF插件终极指南:从零开始掌握3D打印文件格式转换
  • 强力解锁:3步搞定Wallpaper Engine壁纸资源提取终极方案
  • 纪念币预约自动化工具完整使用指南:告别手动抢购时代
  • 多设备微信终极指南:平板模式双开完全手册
  • Blender 3MF插件实战指南:5分钟掌握3D打印文件格式转换
  • QuickLook OfficeViewer:无需Office即可高效预览文档的终极解决方案
  • NVIDIA显卡性能全解锁:深度调优指南助你游戏体验飙升
  • RePKG终极指南:高效管理Wallpaper Engine资源的最佳工具
  • League Akari:重新定义你的英雄联盟游戏体验
  • WeChatPad终极指南:免费实现微信双设备同时登录的完整方案
  • 算法训练营Day++
  • Open-AutoGLM vs 闭源方案:4个维度全面对比,谁才是未来王者?
  • 智慧树刷课插件终极使用指南:3步实现自动化学习
  • 微信多设备同时登录终极方案:简单三步告别设备限制困扰
  • Universal-x86-Tuning-Utility终极指南:解锁x86设备全部性能
  • 5分钟快速上手LeagueAkari:英雄联盟智能自动化实战指南
  • 如何在30分钟内完成Open-AutoGLM一键部署?内附完整脚本
  • NVIDIA Profile Inspector完整指南:解锁显卡隐藏性能的终极教程
  • Blender 3MF插件终极指南:3D打印工作流完整解决方案
  • 被数据分析难哭?paperzz 让你把 “数据乱麻” 变成 “结论图表”
  • 端侧大模型部署实战(基于Open-AutoGLM的轻量化协同优化方案)
  • 纪念币自动化预约工具:告别手速比拼的智能解决方案