treeselect 多选回显
时间: 2023-07-28 17:09:56 浏览: 135
要实现 treeselect 多选回显,你需要在数据源中添加一个 selected 属性,这个属性用于标记当前选中的节点。然后在 treeselect 的 v-model 中绑定选中节点的数组,例如:
```html
<template>
<el-tree-select
v-model="selectedNodes"
:data="treeData"
:props="treeProps"
node-key="id"
show-checkbox
:check-strictly="true"
@check-change="handleCheckChange"
/>
</template>
<script>
export default {
data() {
return {
treeData: [
{
id: 1,
label: 'Node 1',
selected: true,
children: [
{ id: 2, label: 'Node 1-1', selected: false },
{ id: 3, label: 'Node 1-2', selected: true },
],
},
{
id: 4,
label: 'Node 2',
selected: false,
children: [
{ id: 5, label: 'Node 2-1', selected: false },
{ id: 6, label: 'Node 2-2', selected: false },
],
},
],
treeProps: {
children: 'children',
label: 'label',
isLeaf: node => !node.children || node.children.length === 0,
selected: 'selected',
},
selectedNodes: [],
};
},
created() {
// 初始化选中节点数组
this.getSelectedNodes(this.treeData);
},
methods: {
handleCheckChange(data) {
// 更新选中节点数组
this.getSelectedNodes(this.treeData);
},
getSelectedNodes(nodes) {
nodes.forEach(node => {
if (node.selected) {
this.selectedNodes.push(node.id);
}
if (node.children) {
this.getSelectedNodes(node.children);
}
});
},
},
};
</script>
```
在这个例子中,我们给每个节点都添加了一个 selected 属性,并且在 treeselect 的 props 中设置了 selected 属性的名称为 `'selected'`,然后在 treeselect 的 v-model 中绑定一个选中节点的数组 selectedNodes,同时在 created 钩子中初始化选中节点数组。当用户勾选或取消勾选节点时,我们通过 `@check-change` 事件触发 handleCheckChange 方法来更新选中节点数组。最后在 getSelectedNodes 方法中遍历整个树形数据,将所有 selected 属性为 true 的节点的 id 添加到 selectedNodes 数组中,用于回显选中状态。
阅读全文