




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、element-ui使用select组件和tree组件实现下拉树形选择器template部分<el-selectclass="select"><el-optionclass="option"><el-treeclass="tree"></el-tree></el-option></el-select>个三级嵌套就可以搞定css部分.optionheight:auto;line-height:1;padding:0;background-color:#fff;.tr
2、eepadding:4px20px;font-weight:400;网上的办法大多都是直接在option上写,给option加一个高度,然后overflow:auto,这样会有问题,因为select本身使用的是element-ui自己的滚动条组件,max-height为274px,旦option设置高度过大,会出现双重滚动条,而且原生滚动条真的有点丑,其实这里只需要给option加一个height:auto,就可以使用select自带的滚动条,不需要单独再加其他滚动。发现两个问题1. 当树展开的时候,动画不流畅,会抖动一下。分析了一下已有的css,发现是因为option本身设置了line-he
3、ight:34px;而树形里没有设置line-height,设置的是高度为26px。这里直接把option的line-height改为1,果然动画流畅了,舒服了。2. 当option被选中时,树节点所有的文字都会加粗,随便设置一个font-weight:400就行。jS部分要解决几点1点击树时,下拉框不会自动隐藏,一看文档也没有控制下拉框显示隐藏的属性,然后在select组件源码中找到了visible,控制下拉框显示隐藏点击树时设置this.$refs.select.visible=false2. 数据回显,通过tree的setCurrentKey方法设置当前高亮的节点,通过getNode方法
4、获取当前id对应的node,拿到对应的label3. 不管选没选择内容,打开下拉框的时候,滚动条永远在最底部,实在是太难受了。而一想到是不是不能借助select的滚动,而要给option设置滚动时就更难受了。但是给option设置滚动后,发现滚动条永远在最顶部,舒服了,也有问题。突然想到,一个正常不魔改的select组件,选中哪个option时,打开下拉框总能定位到那个选中的,这肯定是select组件内部有个方法做的,偷过来用就行。然后就找到了这个scrollToOption(option)consttarget=Array.isArray(option)&&option0?o
5、ption0.$el:option.$el;if(this.$refs.popper&&target)constmenu=this.$refs.popper.$el.querySelector('.el-select-dropdown_wrap');scrolllntoView(menu,target);this.$refs.scrollbar&&this.$refs.scrollbar.handleScroll();,scrollToOption?拿来吧你很明显,要传入一个option对象,而option的$©1属性是一个dom,则表
6、现形式就是一个Vue的实例,我这边直接用querySelector获取一个dom,传入$el:dom也能用。再然后就是找这个dom,发现当树某一节点被点击时,其class会多一个is-current,那么就可以这样写:letselectDom=document.querySelector('.is-current')this.$refs.select.scrollToOption($el:selectDom)ps:只针对单选做的,多选还需按照情况改。组件全部代码<template><el-selectref="select":value=&
7、quot;value"placeholder请选择"size="mini"visible-change="visibleChange"clearablestyle="width:100%;"clear="clear"><el-optionref="option"class="option":value="optionData.id":label="optionD"><el-tr
8、eeref="tree"class="tree":node-key="nodeKey":data="data":props="props":default-expanded-keys='value'highlight-current:expand-on-click-node="false"node-click="handleNodeClick"></el-tree></el-option></el-sel
9、ect></template><script>exportdefaultname:'TreeSelect',props:/v-model绑定value:type:String,Number,default:'',/树形的数据data:type:Array,default:function()return,/每个树节点用来作为唯一标识的属性nodeKey:type:String,Number,default:'id',/tree的props酉己置props:type:Object,default:function()r
10、eturnlabel:'label',children:'children',data()returnreturnoptionData:id:'',name:'',watch:'value':function(val)if(!this.isEmpty(this.data)this.init(val),'data':function(val)if(!this.isEmpty(val)this.init(this.value),mounted。if(!this.isEmpty(this.data)thi
11、s.init(this.value),methods:/isEmpty(val)for(letkeyinval)returnfalsereturntrue,handleNodeClick(data)letlabel=psabel|'name'this.$emit('input',datathis.nodeKey)this.optionData.id=datathis.nodeKeythis.optionD=datalabelthis.$refs.select.visible=false,init(val)if(val)this.$
12、nextTick()=>letlabel=psabel|'name'this.$refs.tree.setCurrentKey(val)letnode=this.$refs.tree.getNode(val)this.optionData.id=valthis.optionD=nodeabel)elsethis.$refs.tree.setCurrentKey(null),visibleChange(e)if(e)letselectDom=document.querySelector('.is-current')setTim
13、eout()=>this.$refs.select.scrollToOption($el:selectDom),0),clear()this.$emit('i叩ut;'')</script><stylelang="scss"scoped>.optionheight:auto;line-height:1;padding:0;在组件中的使用<template><divclass="container"><cy-tree-selectv-model="value&qu
14、ot;:data="list"style="width:240px;"></cy-tree-select></div></template><script>exportdefaultdata()returnlist:label:系统',id:1,children:label:'用户',id:2,label:'用户组',id:3,label:'角色',id:4,label:'菜单',id:5,label:'组织架构',id:6,label:商品',id
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025饮品店合同模板
- 2025餐饮娱乐合伙合同
- 2025年网站开发合同范本
- 2025建筑外墙涂料施工及景观绿化不锈钢围栏工程合同
- 2025大豆收购合同模板
- 2025房产中介购房合同
- 鸵鸟创意美术课件
- 《成本核算要点》课件
- 青春期性教育女生
- 青春期家校协同心理健康教育体系构建
- 2025年重庆市中考物理模拟试卷(一)(含解析)
- 《服务营销双主动》课件
- 公司法公章管理制度
- 演出经纪人员资格备考资料2025
- 成都交通投资集团有限公司招聘考试真题2024
- (二模)嘉兴市2025年高三教学测试语文试卷(含答案)
- 湖北省宜昌二中2025年高考化学考前最后一卷预测卷含解析
- DZ∕T 0227-2010 地质岩心钻探规程(正式版)
- GB/T 23858-2009检查井盖
- 山东省危废处理名录
- 班组安全安全考核表
评论
0/150
提交评论