用el-select 和el-tree写一个下拉多选树状图 可以回显
时间: 2023-10-20 15:14:46 浏览: 155
基于layui的下拉列表的数据回显方法
5星 · 资源好评率100%
首先,需要引入 Vue、Element UI 和相关的 CSS 文件。
HTML 代码:
```html
<template>
<div>
<el-select v-model="selected" placeholder="请选择" multiple>
<el-option v-for="(item, index) in options" :key="index" :label="item.label" :value="item.value"></el-option>
</el-select>
<el-tree :data="treeData" show-checkbox :props="defaultProps" :check-strictly="true" @check-change="handleCheckChange"></el-tree>
</div>
</template>
```
JavaScript 代码:
```js
<script>
export default {
data() {
return {
selected: [], // 选中的值
options: [
{ label: "选项1", value: "option1" },
{ label: "选项2", value: "option2" },
{ label: "选项3", value: "option3" },
{ label: "选项4", value: "option4" }
],
treeData: [
{
id: 1,
label: "节点1",
children: [
{ id: 2, label: "节点1-1" },
{
id: 3,
label: "节点1-2",
children: [
{ id: 4, label: "节点1-2-1" },
{ id: 5, label: "节点1-2-2" }
]
}
]
},
{
id: 6,
label: "节点2",
children: [{ id: 7, label: "节点2-1" }]
}
],
defaultProps: {
children: "children",
label: "label"
}
};
},
methods: {
// 树状图选中状态改变事件
handleCheckChange(node, checked, children) {
let selectedValues = [];
// 遍历树状图节点,获取选中的节点的值
function loop(node) {
if (node.checked) {
selectedValues.push(node.id);
}
if (node.children && node.children.length > 0) {
node.children.forEach(child => {
loop(child);
});
}
}
loop(node);
this.selected = selectedValues;
}
},
mounted() {
// 回显已选中的值
this.selected = ["option1", "option2", 4];
}
};
</script>
```
通过 `el-select` 和 `el-tree` 组件实现了下拉多选树状图,并且可以回显已选中的值。其中,`el-select` 用于显示选中的值,`el-tree` 用于显示树状图和实现多选功能。
在 `el-tree` 的 `check-change` 事件中,遍历树状图节点,获取选中的节点的值,并将其赋值给 `selected` 属性,从而实现回显已选中的值。
阅读全文