elementui下拉树形结构【完美实现】
在用 elementui 开发项目的时候,在进行下拉选择的时候,由于下拉的选项中,存在‘父’‘子’上下级的关系,所以想用下拉树来解决。通过百度 elementui 下拉树,有很多版本,但是总会有一些问题。最终自己写了一个,能够完美实现下拉树的功能。<template><div class="app-container"><el-select class="main-s
·
在用 elementui 开发项目的时候,在进行下拉选择的时候,由于下拉的选项中,存在‘父’‘子’上下级的关系,所以想用下拉树来解决。
通过百度 elementui 下拉树,有很多版本,但是总会有一些问题。最终自己写了一个,能够完美实现下拉树的功能。
<template>
<div class="app-container">
<el-select class="main-select-tree" ref="selectTree" v-model="value" style="width: 560px;">
<el-option v-for="item in formatData(datas)" :key="item.value" :label="item.label" :value="item.value" style="display: none;" />
<el-tree class="main-select-el-tree" ref="selecteltree"
:data="datas"
node-key="id"
highlight-current
:props="defaultProps"
@node-click="handleNodeClick"
:current-node-key="value"
:expand-on-click-node="expandOnClickNode"
default-expand-all />
</el-select>
</div>
</template>
<script>
export default {
data() {
return {
value: 6,
expandOnClickNode: true,
options:[],
datas: [{
id: 1,
label: '云南',
children: [{
id: 2,
label: '昆明',
children: [
{id: 3,label: '五华区',children:[{id: 8,label: '北辰小区'}]},
{id: 4,label: '盘龙区'}
]
}]
}, {
id: 5,
label: '湖南',
children: [
{id: 6,label: '长沙'},
{id: 7,label: '永州'}
]
}],
defaultProps: {
children: 'children',
label: 'label'
}
}
},
methods: {
// 四级菜单
formatData(data){
let options = [];
data.forEach((item,key) => {
options.push({label:item.label,value:item.id});
if(item.children){
item.children.forEach((items,keys) => {
options.push({label:items.label,value:items.id});
if(items.children){
items.children.forEach((itemss,keyss) => {
options.push({label:itemss.label,value:itemss.id});
if(itemss.children){
itemss.children.forEach((itemsss,keysss) => {
options.push({label:itemsss.label,value:itemsss.id});
});
}
});
}
});
}
});
return options;
},
handleNodeClick(node){
this.value = node.id;
this.$refs.selectTree.blur();
}
}
}
</script>
<style>
.main-select-el-tree .el-tree-node .is-current > .el-tree-node__content{font-weight: bold; color: #409eff;}
.main-select-el-tree .el-tree-node.is-current > .el-tree-node__content{font-weight: bold; color: #409eff;}
</style>
效果截图:

此功能的特点:巧妙的利用了select组件的渲染方式,通过隐藏options来动态计算下拉高度,通过模型同步实现了select组件渲染,不必赋值,同步模型。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)