位置: IT常识 - 正文

【element】el-autocomplete的常见用法(element_at)

编辑:rootadmin
【element】el-autocomplete的常见用法 前言:这段时间突然发现很少写博客了,平时都在平衡工作和休息的时间,周末也没动过笔,而且更重要的是我找不到写的内容了,在经历的初始的新知识的学习阶段后,目前的阶段更加转入对于业务的理解,很多模块在不同项目中都是可以复用的。而且工作中发现开发并不强求特别酷炫的界面效果,更多的是实用的数据展示,因此button,form,table可以说是最常用的,因此后面可能会用更多的篇幅去说这块内容的知识。一、组件介绍

推荐整理分享【element】el-autocomplete的常见用法(element_at),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:elemental.,elemental.,element_,element auto creations,element_,element auto-complete,element auto-complete,elemental.,内容如对您有帮助,希望把文章链接给更多的朋友!

autocomplete是input组件的一个分支,专门用来处理模糊匹配的相关知识,很多时候用户希望输入一个单词就可以自动匹配到相关的内容,这时候就是这个组件发挥作用的地方了。 在这里也能看到官网的相关介绍

二、基本原理

将输入的名称与字典库进行匹配,然后输出成功字段。 这里的匹配时存在两种情况,一种是通过后端接口进行匹配,一种是前端进行匹配,我的感觉是如果是少量的数据可以交给前端,如果数据量过大可能后端匹配完了再输出比较好。

三、具体实现【后端实现法】 因为涉及到接口所以只会说一下流程,重点介绍前端实现。

后端匹配不需要获取字典,你只需要把前端输入字符传给后端,等后端匹配好后把结果给你,然后你再将结果返回到页面就好了。 (querySearch, cb)是固定格式,前者代表输入的字段,后者是个方法,代表输出的结果

【前端实现法】 前端实现的页面样式与后端一样,这里请求的@Select是为了处理选择后的结果 【element】el-autocomplete的常见用法(element_at)

因为是前端自己处理,所以需要先获取总字典序,将其存储在一个变量里面

这样可以一进入页面就处理好总字典的内容。

具体要讲一下这个querySearch方法中可实现的内容

if--else判断是看你想不想要用户不输入内容也进行匹配,如果默认用户输入内容才开始匹配,就只要if内的内容就好(我这里是不输入也会匹配) 上文以及提到cb()中输出返回的结果,这里results变量就是你想返回的结果,具体如何根据你的匹配方法决定,一般都是输入一个字符返回匹配到的结果,但是也可以不这么匹配. 实现原理是之前定义的list里面有label和name字段,你可以处理用户输入的时候按name字段,输出的是label字段,这样就实现了中英文匹配的情况.需要注意的是匹配的结果results中的value字段才会在页面上展示,如果你最后返回的list没有这个字段,页面上是不会展示内容的,这也让前端可以实现自定义展示. 最后想说明的是匹配的方法,有首字母的匹配以及模糊匹配,首字母的就是从头开始,如果第一个字符不匹配就放弃,模糊的是如果整个字符串有能匹配的字段都会输出,具体情况可以看演示. 首字母匹配 模糊匹配 具体方法我已经封装了,这里忽略大小写

handleSelect主要用来处理选中后的结果,如果不处理默认就是list表中的内容

四、源码<template> <div class="autoComplete"> <el-form style="margin:30px" label-width="180px" label-position="right"> <el-form-item label="后端进行搜索并匹配:"> <el-autocomplete placeholder="请输入匹配内容" v-model="matchName" :fetch-suggestions="querySearchAsync"></el-autocomplete> </el-form-item> <el-form-item label="前端自行匹配:"> <el-autocomplete placeholder="请输入匹配内容" v-model="searchName" :fetch-suggestions="querySearch" @select="handleSelect"></el-autocomplete> </el-form-item> </el-form> </div></template><script>import { getCurrentInstance, onMounted, reactive, ref } from 'vue'export default { setup () { const { proxy } = getCurrentInstance() const searchName = ref('') const matchName = ref('') const totalData = ref([]) let timeOut = reactive() /**获取总查询表信息 */ const getList = () => { try { // 这里应该请求接口 totalData.value = list } catch (error) { proxy.$message.error(error.message) } } /**搜索结果 */ const querySearch = (querySearch, cb) => { let results = [] if (querySearch) { const findout = totalData.value.filter((x) => nameFilter(x, querySearch)) results = findout.map(x => ({ ...x, value: x.label })) } else { results = totalData.value.map(x => ({ ...x, value: x.label })) } console.log(results, '结果') clearTimeout(timeOut) timeOut = setTimeout(() => { cb(results) }, 1000); } /**选择的结果 */ const handleSelect = (item) => { console.log(item, '选择结果') searchName.value = "[label:" + item.label + "; name:" + item.name + "]" } /**模糊匹配方法 */ const nameFilter = (item, querySearch) => { return item.label.toLowerCase().match(querySearch.toLowerCase()) ? true : false } /**首字母匹配法 */ const firstCharFilter = (item, querySearch) => item.label.toLowerCase().indexOf(querySearch.toLowerCase()) === 0 /**请求后端接口检索 */ const querySearchAsync = (querySearch, cb) => { let results = [] if (querySearch === '') { cb(results) } else { try { // 请求接口 const res = [] results = res cb(results) } catch (error) { proxy.$message.error(error.message) } } } onMounted(() => { getList() }) const list = [ { id: 101, label: "angle", name: "角;角度" }, { id: 102, label: "ant", name: "蚂蚁" }, { id: 103, label: "apple", name: "苹果" }, { id: 104, label: "arch", name: "拱形;弧形" }, { id: 105, label: "arm", name: "臂" }, { id: 106, label: "army", name: "军队" }, { id: 107, label: "baby", name: "婴儿" }, { id: 108, label: "bag", name: "袋" }, { id: 109, label: "ball", name: "球" }, { id: 122, label: "bone", name: "骨" }, { id: 123, label: "book", name: "书" }, { id: 124, label: "boot", name: "靴" }, { id: 125, label: "bottle", name: "瓶子" }, { id: 126, label: "box", name: "箱;盒" }, { id: 127, label: "boy", name: "男孩" }, { id: 128, label: "brain", name: "脑" }, { id: 129, label: "brake", name: "煞车" }, { id: 130, label: "branch", name: "树枝" }, { id: 131, label: "brick", name: "砖" }, { id: 132, label: "bridge", name: "桥" }, { id: 133, label: "brush", name: "刷子" }, { id: 134, label: "bucket", name: "水桶" }, { id: 135, label: "bulb", name: "球茎;灯泡" }, { id: 136, label: "button", name: "纽扣" }, { id: 150, label: "clock", name: "时钟" }, { id: 151, label: "cloud", name: "云" }, { id: 152, label: "coat", name: "外套,大衣" }, { id: 153, label: "collar", name: "衣领" }, { id: 154, label: "comb", name: "梳子" }, { id: 155, label: "cord", name: "绳子" }, { id: 156, label: "cow", name: "母牛" }, { id: 157, label: "cup", name: "杯子" }, { id: 158, label: "curtain", name: "帘;幕" }, { id: 159, label: "cushion", name: "垫子" }, { id: 160, label: "dog", name: "狗" }, { id: 169, label: "eye", name: "眼睛" }, ] return { searchName, matchName, querySearch, handleSelect, querySearchAsync } }}</script>
本文链接地址:https://www.jiuchutong.com/zhishi/300649.html 转载请保留说明!

上一篇:目标检测论文解读复现【NO.21】基于改进YOLOv7的小目标检测(目标检测论文解析怎么写)

下一篇:【论文阅读】2022年最新迁移学习综述笔注(Transferability in Deep Learning: A Survey)(论文阅读网站排行榜)

  • excel表格编辑受限怎么取消(excel表显示编辑受限是怎么回事)

    excel表格编辑受限怎么取消(excel表显示编辑受限是怎么回事)

  • Redmi K40的价格是怎样的(redmi k40预计价格)

    Redmi K40的价格是怎样的(redmi k40预计价格)

  • 荣耀play4有指纹解锁功能吗(荣耀play4有指纹解锁吗怎么设置?)

    荣耀play4有指纹解锁功能吗(荣耀play4有指纹解锁吗怎么设置?)

  • iphone12是什么充电接口(iphone12是什么充电器口)

    iphone12是什么充电接口(iphone12是什么充电器口)

  • 怎么取消抖音APP和火山小视频同步(怎么取消抖音app支付)

    怎么取消抖音APP和火山小视频同步(怎么取消抖音app支付)

  • 华为mate20pro录音功能在哪里(华为mate20pro录音文件怎么拷到电脑上)

    华为mate20pro录音功能在哪里(华为mate20pro录音文件怎么拷到电脑上)

  • 显卡不转显示器不显示(显卡不转显示器正常)

    显卡不转显示器不显示(显卡不转显示器正常)

  • iphone11pro max是不是双卡(iphone11pro max是不是双扬声器)

    iphone11pro max是不是双卡(iphone11pro max是不是双扬声器)

  • 苹果手机黑屏怎么办(苹果手机黑屏怎么重启开机)

    苹果手机黑屏怎么办(苹果手机黑屏怎么重启开机)

  • 华为e50315能用4g吗(华为e5-0825能用4g吗?)

    华为e50315能用4g吗(华为e5-0825能用4g吗?)

  • 为什么退款售后删不掉(为什么退款售后怎么删除记录)

    为什么退款售后删不掉(为什么退款售后怎么删除记录)

  • 仿生制造技术有哪些(仿生制造的前景)

    仿生制造技术有哪些(仿生制造的前景)

  • vivox30是不是5g手机(vivox30是5g手机吗?)

    vivox30是不是5g手机(vivox30是5g手机吗?)

  • 爱奇艺购买的电影几天(爱奇艺购买的电影可以下载吗)

    爱奇艺购买的电影几天(爱奇艺购买的电影可以下载吗)

  • vivox20什么时间出的(vivox20多久发布的)

    vivox20什么时间出的(vivox20多久发布的)

  • 路由器unknown是什么意思(路由器unreachable)

    路由器unknown是什么意思(路由器unreachable)

  • 荣耀9x指纹解锁在哪(荣耀9x指纹解锁消失)

    荣耀9x指纹解锁在哪(荣耀9x指纹解锁消失)

  • 华为手机hd2什么意思(华为手机 hd2)

    华为手机hd2什么意思(华为手机 hd2)

  • 嘀嗒拼车一定要评价吗(嘀嗒拼车需要先付钱吗)

    嘀嗒拼车一定要评价吗(嘀嗒拼车需要先付钱吗)

  • 怎样把照片改成500k(怎样把照片改成jpg格式)

    怎样把照片改成500k(怎样把照片改成jpg格式)

  • oppor17手机hd怎么关闭(oppor17手机hd在手机上是什么如何关闭)

    oppor17手机hd怎么关闭(oppor17手机hd在手机上是什么如何关闭)

  • cad布局怎么转模型(cad模型转换布局)

    cad布局怎么转模型(cad模型转换布局)

  • mac电脑安装win10系统(60分钟搞定)(mac电脑安装win10系统报错)

    mac电脑安装win10系统(60分钟搞定)(mac电脑安装win10系统报错)

  • NovelAi + Webui + Stable-diffusion本地配置

    NovelAi + Webui + Stable-diffusion本地配置

  • python打包技巧:彻底解决pyinstaller打包exe文件太大的问题(python2打包)

    python打包技巧:彻底解决pyinstaller打包exe文件太大的问题(python2打包)

  • 公司购买车辆的好处
  • 增值税附征怎么计算
  • 固定资产开专票怎么记凭证
  • 加计抵减附加税怎么做账务处理
  • 通行费发票怎么合并一张发票
  • 核定征收企业如何纳税
  • 农村电网维护费会计分录
  • 红字发票科目入进项税额还是进项税额转出
  • 三包范围内的维修费谁出
  • 税务自查补缴税款算滞纳金么
  • 应有财务软件
  • 银行贷款利息是百分比还是千分比
  • 税控盘年费去哪里交
  • 小规模纳税人核定标准
  • 应交税费明细科目有简易计税吗
  • 建筑业企业包括哪些企业
  • 预付账款和其他应收款可以抵消吗
  • 税号都对开户行错了影响抵扣
  • 出口业务类型怎么写
  • 正回购和逆回购的区别
  • 营改增后的增值税税率
  • linux默认文件类型
  • 存货跌价准备是谁的备抵账户
  • 公司收到政府科技创新奖
  • 安装win7系统的硬件要求
  • php中运算符
  • windows11搜索
  • 超市收取进场费会计分录
  • 长期借款的业务处理
  • adblock规则编写
  • CI(Codeigniter)的Setting增强配置类实例
  • php提供了________和___________两种复合数据类型
  • 货物退回的会计处理
  • 有限责任公司股东向股东以外的人转让股权
  • php中表单的使用
  • 个人所得税申报操作流程
  • 未分配利润的核算内容
  • 劳务报酬可以专项附加扣除吗
  • 【MongoDB for Java】Java操作MongoDB数据库
  • 党建工作经费使用流程
  • 计提和支付可以录在一张凭证吗
  • 发票已交税还可以作废吗
  • 企业会计制度固定资产折旧年限
  • 商品削价的核算
  • 餐厅餐具如何使用
  • 小规模增值税退税流程怎么操作
  • 银行对账单和存款日记账怎样核对并标识
  • 公司账户钱取出来税务局会查账吗
  • 企业出租经营权是否征税
  • 应收代位追偿款有没有明细科目
  • 没收租赁保证金要交增值税么
  • 预存返利骗局
  • 规划设计费收费依据
  • 商品储存的基本要求是什么?
  • 预收租金的增值税
  • 个体工商户的建筑劳务是否需要资质
  • 建立明细账科目怎么排顺序
  • 会计备注一般写什么
  • linux中如何配置环境变量
  • win10 rs3
  • 64位windows8系统安装驱动时出现签名错误的解决方法
  • win10 edge浏览器设置信任站点
  • win7在开始菜单右击
  • win7英文输入法
  • linux下VSFTP 530 Permission denied错误的解决办法
  • js如何将毫秒转换为日期
  • nodejs代码规范
  • node 操作mysql
  • unity ui坐标
  • js函数调用函数
  • centos7如何分区
  • 噩梦act2
  • android!
  • angular.js
  • 用javascript写简单网页
  • javascript如何写操作命令
  • python通过编程求权重
  • java多线程编程实战指南
  • 税务稽查延期检查最长多长时间最长不得超过30日
  • 山东省梁山县属于什么市?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设