位置: 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设计卷积神经网络

  • 华为手环7有闹钟吗(华为手环7有闹钟震动吗)

    华为手环7有闹钟吗(华为手环7有闹钟震动吗)

  • 钉钉消息多久可以撤回(钉钉消息多久可以删除)

    钉钉消息多久可以撤回(钉钉消息多久可以删除)

  • 如何在文字下面加一条横线(word文档如何在文字下面加点)

    如何在文字下面加一条横线(word文档如何在文字下面加点)

  • 华为荣耀8手机电池容量(华为荣耀8手机怎么设置锁屏时间)

    华为荣耀8手机电池容量(华为荣耀8手机怎么设置锁屏时间)

  • dbms提供的数据保护功能有(mydql数据库)

    dbms提供的数据保护功能有(mydql数据库)

  • 苹果11手机是不是双卡(苹果11手机是不是正品)

    苹果11手机是不是双卡(苹果11手机是不是正品)

  • 为什么微信显示非朋友(为什么微信显示账号异常)

    为什么微信显示非朋友(为什么微信显示账号异常)

  • ipad2微信低版本用不了(ipadmin微信版本低)

    ipad2微信低版本用不了(ipadmin微信版本低)

  • 话费最少可以充多少(话费最少充多少合适)

    话费最少可以充多少(话费最少充多少合适)

  • 抖音点了赞又取消别人能看到吗(抖音点了赞又取消什么意思)

    抖音点了赞又取消别人能看到吗(抖音点了赞又取消什么意思)

  • 抖音没声音(airpods刷抖音没声音)

    抖音没声音(airpods刷抖音没声音)

  • 苹果xr电池不耐用怎么办(苹果xr电池寿命掉的快)

    苹果xr电池不耐用怎么办(苹果xr电池寿命掉的快)

  • 华为4pro手环怎么开机(华为4pro手环怎么连接手机)

    华为4pro手环怎么开机(华为4pro手环怎么连接手机)

  • 在关系数据模型中域是指什么(在关系数据模型中,若属性A是关系R的主键)

    在关系数据模型中域是指什么(在关系数据模型中,若属性A是关系R的主键)

  • 快手小店怎么不显示订单(快手小店怎么不让别人看到)

    快手小店怎么不显示订单(快手小店怎么不让别人看到)

  • iphonex像素多少(iphonex像素高吗)

    iphonex像素多少(iphonex像素高吗)

  • 苹果xr是第几代手机(苹果xr和苹果11的区别)

    苹果xr是第几代手机(苹果xr和苹果11的区别)

  • 为什么sd卡不可用(为什么sd卡不可用vivo)

    为什么sd卡不可用(为什么sd卡不可用vivo)

  • 手机百度网盘如何提速(手机百度网盘如何下载链接文件)

    手机百度网盘如何提速(手机百度网盘如何下载链接文件)

  • vivox27制作铃声在哪里(vivox27自定义铃声怎么添加)

    vivox27制作铃声在哪里(vivox27自定义铃声怎么添加)

  • 苹果mt762cha是什么型号(iphone mt762za/a)

    苹果mt762cha是什么型号(iphone mt762za/a)

  • 红米note8是什么解锁(红米note8机型)

    红米note8是什么解锁(红米note8机型)

  • 充电器发烫对手机有影响吗(充电器充电发烫会不会爆炸)

    充电器发烫对手机有影响吗(充电器充电发烫会不会爆炸)

  • 陇通卡怎样手机充值(陇通卡怎样手机激活)

    陇通卡怎样手机充值(陇通卡怎样手机激活)

  • 华为p30自带贴膜吗(华为p30贴钢化膜时自带的膜还要吗)

    华为p30自带贴膜吗(华为p30贴钢化膜时自带的膜还要吗)

  • 电脑显示一分钟后重启怎么办(电脑显示一分钟就黑屏)

    电脑显示一分钟后重启怎么办(电脑显示一分钟就黑屏)

  • 华为mate10拍照技巧(华为mate10拍照效果)

    华为mate10拍照技巧(华为mate10拍照效果)

  • 用什么方法看网速?怎么看网速?(要看网怎么找)

    用什么方法看网速?怎么看网速?(要看网怎么找)

  • 房地产开发企业资质管理规定
  • 减免税款递延收入怎么算
  • 以前年度多缴纳的企业所得税退还
  • 财务报表年报怎么更正
  • 公司买的电器可以抵扣吗
  • 年终奖12月份计提少了
  • 税控服务费减免政策
  • 公司付款发票
  • 装订需要多长时间
  • 小规模纳税人交印花税吗
  • 航天金税盘证书口令错误
  • 企业隐藏收入会受怎样处罚
  • 个人独资企业服务中心是干嘛的
  • 事业单位如何计提工资
  • 事业单位盘亏资产的处理
  • 退回房租含税的情况怎么入账?
  • 福利费实物发放标准
  • 建筑企业之前的工作内容
  • 发票上单价可以开0吗
  • 景区门票入什么费用
  • 企业偷税漏税行为诉讼有效期限
  • 手撕税票去哪可以弄到
  • 增值税小规模纳税人申报表填表说明
  • 小规模纳税人租金收入增值税税率
  • 有限公司属于什么企业
  • 企业股权平价转让涉及哪些税费
  • windows 10纯净版
  • 个人开票给公司有什么风险
  • 银行存款日记账怎么记账
  • php双冒号和箭头
  • ipados15什么时候发布
  • php动态网站开发项目教程
  • 购销合同印花税税率2023
  • 收回已核销的坏账分录
  • 出口退税运费的账务处理
  • 转让旧房及建筑物的扣除项目
  • nodejs怎么更新版本
  • 国家最高科技奖2018
  • php socket编程
  • element html
  • apache环境搭建
  • 工程项目出纳
  • 不构成业务的反义词
  • 雷达信号pri
  • 增值税纳税申报表怎么填
  • 以股权换股权税务问题
  • wordpress怎么删除文章
  • 企业用车年检需要什么资料
  • python django做网页
  • phpcms官网打不开
  • 织梦图集的使用教程
  • 运输费抵扣进项税怎么算
  • sql语句批量添加数据
  • 息税前利润的计算公式中的利息费用
  • 普通发票红字冲销怎么操作流程
  • 贴现帐务处理
  • 固定资产抵扣影响税负
  • 固定性制造费用能量差异公式
  • 工资社保医保计算
  • 收到票据款
  • 其他应收款如何做坏账处理
  • 主营业务收入一定要结转成本吗
  • 一般纳税人劳务费税率是多少2023
  • 数据库日期要加引号吗
  • mysql获取日期年份
  • win8.1重置电脑
  • 电脑安装win8系统
  • xp无法创建目录或文件
  • 复制粘贴报错
  • 电脑取消开机密码显示不能改
  • centos关闭kdump
  • centos 安装选择
  • 环境变量windows
  • xp系统explorer停止工作
  • linux shell有什么用
  • python制作gui
  • python 基础教程第三版 怎么样
  • python27文件夹
  • 新车购置税是多少
  • 浙江省增值税专用发票票样
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设