vue项目中整合elementui中的下拉框和树,实现下拉框树形多选
在Vue项目中,你可以使用Element UI库中的el-select
组件结合el-tree
组件来实现下拉框树形多选的功能。以下是一个简单的示例代码:
<template>
<div>
<el-select
v-model="selectedValues"
multiple
placeholder="请选择"
@change="handleChange"
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
>
<el-tree
:data="item.children"
:props="defaultProps"
node-key="id"
ref="tree"
:check-strictly="true"
@check="handleCheck"
></el-tree>
</el-option>
</el-select>
</div>
</template>
<script>
export default {
data() {
return {
selectedValues: [],
options: [
{
value: 'option1',
label: '选项1',
children: [
{ id: 1, label: '子选项1-1' },
{ id: 2, label: '子选项1-2' }
]
},
{
value: 'option2',
label: '选项2',
children: [
{ id: 3, label: '子选项2-1' },
{ id: 4, label: '子选项2-2' }
]
}
],
defaultProps: {
children: 'children',
label: 'label'
}
};
},
methods: {
handleChange(value) {
// 处理选中值变化
},
handleCheck(data, checked, indeterminate) {
const tree = this.$refs.tree;
const checkedNodes = tree.getCheckedNodes();
this.selectedValues = checkedNodes.map(node => node.id);
}
}
};
</script>
在这个示例中,el-select
组件用于展示下拉菜单,并通过multiple
属性来支持多选。每个下拉选项内嵌套了el-tree
组件,以实现树形结构的展示。通过el-tree
的check-strictly
属性和check
事件,我们可以获取到所有选中的节点,并将它们的ID存储到selectedValues
数组中,以便后续处理。
评论已关闭