位置: IT常识 - 正文

ElementUI实现在下拉列表里面进行搜索(elementui怎么样)

编辑:rootadmin
ElementUI实现在下拉列表里面进行搜索 分析:

推荐整理分享ElementUI实现在下拉列表里面进行搜索(elementui怎么样),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:element-ui,elementui怎么样,element-ui,elementui rule,elementui 3,elementui ts,elementui怎么样,elementui怎么样,内容如对您有帮助,希望把文章链接给更多的朋友!

首先我们需要实现上图的效果,然后Element-UI的el-select是没有的,所以需要自己写我们需要用到el-popover组件,然后使用它的v-model="visible"来实现控制显示我们在el-popover的slot="reference" 放一个el-select使用popper-append-to-body="false"不需要插入浮动元素使用popper-class="hide-popper"定义浮窗class为hide-popper,并设置 display:none,这样选中了就不会存在el-select的下拉选项el-option 循环下面选择的list里面的元素,这样就可以在el-select展示选中的并存在删除el-select双向绑定的就是自定义选择的数组html:<template><div class="arrbox"><!-- 通过visible控制显示还是隐藏 --><el-popoverv-model="visible"placement="bottom-start"width="auto"><div slot="reference" class="check-select"><!-- popper-append-to-body:不需要插入浮动元素,popper-class:设置类名并隐藏 --><el-selectref="select"v-model="currentval":style="{width:`${width}px`,height:`${height}`}"multiple:placeholder="placeholder":popper-append-to-body="false"popper-class="hide-popper"style="width:100%"@visible-change="visibleChange"@focus="getFocus"> <el-optionv-for="item in selectItem":key="`${item.value}_k`":label="item.label":value="item.value"/></el-select></div><!-- selectBxClick让select强制选中 --><div class="selectMain" :style="{'min-width':`${width-20}px`}" @click="selectBxClick"><div class="seachButton"><el-selectv-model="seachValue"placeholder=" 请选择筛选"style="width:70%;margin-right:10px;max-width:195px"@visible-change="selectBxClick()"><el-optionv-for="item in seachList":key="item.value":value="item.value":label="item.label"/></el-select><div class="btn" @click="seachBtn">搜索</div></div> <div class="selectDiv"> <div v-for="item in list.filter(n=>n.value=='all')" :key="item.value" class="list" :class="[currentval.indexOf(item.value)!=-1?'selected':'',item.value=='all'?'allCheck':'']" @click="clickItem(item)">{{ item.label }}</div> <div class="selectDivAuto"> <div v-for="item in list.filter(n=>n.value!='all')" :key="item.value" class="list" :class="[currentval.indexOf(item.value)!=-1?'selected':'',item.value=='all'?'allCheck':'']" @click="clickItem(item)">{{ item.label }}</div> </div> </div></div></el-popover></div></template>js:ElementUI实现在下拉列表里面进行搜索(elementui怎么样)

使用getFocus获取是否聚焦,聚焦了让visible=true,这样就可以显示出自定义的下拉选择项

通过visibleChange实施监听el-select,控制el-popover显示

在点击自定义的下拉选择项时,通过@click="selectBxClick"让el-select一直聚焦,这样箭头就会一直向上

通过 @click="seachBtn"和getList获取列表,具体需要自己去自定义

// 模拟获取的数据const seachClickList = [{value: '1',label: '测试1',type: '1'},{value: '2',label: '测试2',type: '1'},{value: '3',label: '测试3',type: '1'},{value: '4',label: '测试4',type: '2'},{value: '5',label: '测试5',type: '2'},{value: '6',label: '测试6',type: '2'},{value: '7',label: '测试7',type: '2'}]export default {model: {prop: 'parentArr',event: 'change-parentArr'},props: {parentArr: {type: Array,default() {return []}},// 传入选中的item,主要时防止list里面没有选中的数据parentSelectItem: {type: Array,default() {return []}},width: {type: Number,default: 300},height: {type: Number,default: 30},placeholder: {type: String,default: '请输入'}},data() {return {seachList: [{value: '1',label: '条件一'},{value: '2',label: '条件二'}],visible: false,currentval: [],list: [],selectItem: [],seachValue: '1'}},watch: {seachValue: {handler(value) {this.getList(value)},deep: true,immediate: true},parentArr: {handler(value) {this.currentval = value},deep: true,immediate: true},parentSelectItem: {handler(value) {this.selectItem = value.map(n => { if (n.value == 'all') { n.label = '全部' } return n })},deep: true,immediate: true},currentval: { handler(value) { this.$emit('change-parentArr', value) }}},created() {},methods: {getList(value) { this.list = [{ label: '全部', value: 'all' }, ...seachClickList.filter(n => n.type == value)] this.getSelectItem()},// 获取选中的itemgetSelectItem() { const noItemList = this.currentval.map(n => { if (this.selectItem.findIndex(i => i.value == n) == -1) { return n } return null }).filter(n => n != null) noItemList.forEach(item => { const index = this.list.findIndex(i => i.value == item) if (index != -1) { this.selectItem.push(this.list[index]) } })},getFocus() { this.visible = true},visibleChange(data) { this.visible = data},selectBxClick() { // 避免点击框体时组件消失 this.$refs.select.visible = true},// 选择clickItem(item) { const index = this.currentval.indexOf(item.value) if (index == -1) { if (item.value == 'all') { this.currentval = ['all'] this.selectItem = [{ label: '全部', value: 'all' }] } else { this.currentval.push(item.value) this.selectItem.push(item) const currentvalIndex = this.currentval.indexOf('all') const selectItemIndex = this.selectItem.findIndex(n => n.value == 'all') if (currentvalIndex != -1 && selectItemIndex != -1) { this.selectItem.splice(selectItemIndex, 1) this.currentval.splice(currentvalIndex, 1) } } } else { const itemIndex = this.selectItem.findIndex(n => n.value == item.value) this.selectItem.splice(itemIndex, 1) this.currentval.splice(index, 1) } },// 搜索seachBtn() { this.getList()}}}

css:

selected属性使用了el-select的样式,让样子尽量一致.arrbox {display: inline-block;}.check-select{::v-deep.hide-popper{display: none;}}::v-deep .el-input__suffix{i:not(.el-select__caret){display: none;}}.selectMain {width: 100%;height: 100%;.seachButton{width: 100%;align-items: center;display: flex;div.btn{width: 25%;max-width: 70px;max-width: 80px;height: 40px;display: flex;align-items: center;justify-content: center;font-size: 12px;color: #fff;background-color: #409EFF;border-radius: 5px;cursor: pointer;}}.selectDiv{ width: 100%; max-width: 500px; margin-top: 10px; padding: 0 10px 0 0; .list{ width: 100%; padding: 10px 20px 10px 10px; color: #666; cursor: pointer; position: relative; &.selected{ color: #409EFF; &::after{ position: absolute; right: 0px; top: 50%; transform: translateY(-50%); font-family: element-icons; content: "\e6da"; font-size: 12px; font-weight: 700; -webkit-font-smoothing: antialiased; } } } .selectDivAuto{ width: calc(100% + 15px); max-height: 300px; overflow-y: auto; .list{ padding: 10px 30px 10px 10px; &.selected::after{ right: 10px; } } } }}.allCheck{border-bottom: 1px solid rgb(228, 225, 225);}

使用

<template><seachSelectInput v-model="from.tag" :parentSelectItem='selectItem' :width="302" placeholder="请选择标签" /></template><script>import seachSelectInput from ./seachSelectInput'export default {components: {seachSelectInput},data(){return{from:{tag:['1']},selectItem:[{value: '1',label: '测试1'}]}}}
本文链接地址:https://www.jiuchutong.com/zhishi/299521.html 转载请保留说明!

上一篇:GPU版本安装Pytorch教程最新方法(gpu版本的pytorch)

下一篇:基于chatGPT设计卷积神经网络

  • vivo游戏魔盒防误触模式怎么关闭(vivo游戏魔盒可以隐藏游戏吗?)

    vivo游戏魔盒防误触模式怎么关闭(vivo游戏魔盒可以隐藏游戏吗?)

  • 淘宝亲密度等级划分(淘宝亲密度等级划分 超粉)

    淘宝亲密度等级划分(淘宝亲密度等级划分 超粉)

  • PPT怎么设置演讲者放映(ppt怎么设置演讲背景图)

    PPT怎么设置演讲者放映(ppt怎么设置演讲背景图)

  • airpods显示乱码怎么办(airpodspro名称变成乱码)

    airpods显示乱码怎么办(airpodspro名称变成乱码)

  • 12的二进制是多少(12的二进制怎么算过程)

    12的二进制是多少(12的二进制怎么算过程)

  • 蓝牙配对是什么意思(蓝牙配对有什么用处)

    蓝牙配对是什么意思(蓝牙配对有什么用处)

  • 登录中国移动收不到验证码怎么办(登录中国移动收不到验证码怎么办多久能收到)

    登录中国移动收不到验证码怎么办(登录中国移动收不到验证码怎么办多久能收到)

  • oppo强制分屏(oppo手机强行分屏)

    oppo强制分屏(oppo手机强行分屏)

  • 微信视频号有什么作用(微信视频号有什么禁忌)

    微信视频号有什么作用(微信视频号有什么禁忌)

  • 怎么把qq提示音改成系统提示音(怎么把qq提示音改成手机提示音)

    怎么把qq提示音改成系统提示音(怎么把qq提示音改成手机提示音)

  • 电脑钉钉如何发语音(电脑钉钉如何发起签到)

    电脑钉钉如何发语音(电脑钉钉如何发起签到)

  • 滴滴打车能开发票吗(滴滴打车能开发票报销吗)

    滴滴打车能开发票吗(滴滴打车能开发票报销吗)

  • 抖音里已关注的意思(抖音里已关注的人怎么取消关注)

    抖音里已关注的意思(抖音里已关注的人怎么取消关注)

  • vlog和视频的差别(vlog和短视频意思一样吗)

    vlog和视频的差别(vlog和短视频意思一样吗)

  • airplay怎么关闭不了(苹果手机airplay怎么关闭)

    airplay怎么关闭不了(苹果手机airplay怎么关闭)

  • 小米手机怎么强制关机(小米手机怎么强制安装风险软件)

    小米手机怎么强制关机(小米手机怎么强制安装风险软件)

  • 苹果11有黑边吗(苹果11有黑边吗怎么设置)

    苹果11有黑边吗(苹果11有黑边吗怎么设置)

  • 服务器500错误的原因(500 internal server error (服务器错误))

    服务器500错误的原因(500 internal server error (服务器错误))

  • ps材质是食品级吗(食品级ps和pp材质的区别)

    ps材质是食品级吗(食品级ps和pp材质的区别)

  • 小爱同学音箱怎么连接网络(小爱同学音箱怎么恢复出厂设置)

    小爱同学音箱怎么连接网络(小爱同学音箱怎么恢复出厂设置)

  • 荣耀v20呼吸灯怎么设置(荣耀x20手机呼吸灯)

    荣耀v20呼吸灯怎么设置(荣耀x20手机呼吸灯)

  • 微信红包为什么不能领取(微信红包为什么收不了钱)

    微信红包为什么不能领取(微信红包为什么收不了钱)

  • 系统理论的主要内容(系统理论的主要内容包括(ABC )三个方面)

    系统理论的主要内容(系统理论的主要内容包括(ABC )三个方面)

  • 手环时间不对怎么设置(手环时间不对怎么调回来)

    手环时间不对怎么设置(手环时间不对怎么调回来)

  • 核心圈好图书推荐(二)(核心书评价格)

    核心圈好图书推荐(二)(核心书评价格)

  • 什么叫应纳税所得额
  • 一次性医用外科口罩哪个牌子好
  • 小企业会计准则下退企税分录
  • 出口退税申报系统安装路径
  • 公户结算卡最多可以拿多少现金
  • 城镇土地使用税减免税政策
  • 成本税率计算公式
  • 固定资产一次性折旧政策2023
  • 13%税开成了3%怎么报税
  • 医疗胶片扫描仪怎么用
  • 已经认证的发票红冲发票需要收回原发票吗
  • 发票冲红需要什么手续
  • 事业单位代扣社保分录
  • 已经建立了某个公司
  • 个人租车所得交什么税
  • 红字发票需要盖章子吗
  • 增值税如何确认
  • 有一个公司能做多少事情
  • 平销行为如何冲减进项税金
  • 我的初级备考经验--付出才有回报
  • 公司购买的原材料,原价格销售合理吗
  • windows聚焦无法显示 为灰色
  • 防暑降温费会计处理
  • 借支单如何做账科目
  • linux GTK、KDE、Gnome、XWindows 图形界面区别介绍
  • PHP:oci_new_collection()的用法_Oracle函数
  • 免抵退税怎么做账
  • 错账的种类
  • 进项税额转出怎么做账务处理
  • 湿地上有什么植物
  • ubuntu npm安装
  • 工资储备金制度
  • 收到金融服务费怎么转账给别人
  • php 抓取别的网站的内容
  • yaf框架优缺点
  • 增值税税控系统技术维护费怎么做账
  • 前端框架三大框架
  • print函数php
  • autoscle
  • mongodb视频教程
  • 季度预缴纳税申报表利润总额
  • 厂区地面硬化属于土建还是市政
  • 长期股权投资其他债券投资公允价值变动
  • 开票项目与实际不符合
  • 税金及附加怎么做分录
  • FreeBSD安装xfce4: 鼠标不能用
  • 食用油交税吗
  • 购进货物用于建筑安装
  • 申报错误后处理有影响吗
  • 临时工资怎么核算
  • 固定资产进项留存怎么算
  • 财政拨入的专项款专账怎么做
  • 固定成本和变动成本举例
  • 视同销售是按成本价入账还是按计税价格入账,为什么?
  • 在建工程的消防要求
  • 对公账户付个人工资怎么入账
  • 年底结转损益后如何结转
  • 电脑买了四个月折旧多少
  • 对公账户没有用了一定要注销吗?
  • 开了票收不到钱怎么做账
  • 贸易融资具体包括
  • 车子报废车子怎么处理
  • sqlserver 断开数据库连接
  • macbook分屏功能
  • 苹果mac没有声音怎么办
  • w10看不到我的电脑
  • WIN10系统怎么清理电脑c盘垃圾怎么清理
  • nhaspx.exe是什么
  • win8系统分辨率调不了
  • 写出linux安装的详细步骤
  • windows10如何取消密码开机
  • win7如何使用usb无线网卡
  • shell脚本 \r
  • 你应该知道的2000个地理常识
  • json对象结构中,关键字key必须为什么类型
  • 河南居民医保网上缴费查询
  • 直系亲属房产买卖过户税费
  • 怎样理解句子我还没弄清楚是怎么回事
  • 金税盘的操作步骤
  • 医保账户被扣财富怎么办
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设