el-tree 的show-checkbox模式下 选中父节点时,子节点不选中
时间: 2023-11-06 11:05:47 浏览: 224
在 el-tree 的 show-checkbox 模式下,选中父节点时,默认情况下子节点也会被选中。如果你希望选中父节点时,子节点不被选中,可以使用 el-tree 的 node-key 属性来实现。具体步骤如下:
1. 在 el-tree 组件上添加 node-key 属性,该属性用于指定节点的唯一标识符,可以是任意字符串或数值类型的属性,建议使用节点的 id 属性。
```html
<el-tree :data="data" :node-key="'id'" show-checkbox>
```
2. 在 el-tree 的 check-change 事件中,获取选中的节点和取消选中的节点,在选中父节点时,取消选中其子节点。具体代码如下:
```javascript
<el-tree
:data="data"
:node-key="'id'"
show-checkbox
@check-change="handleCheckChange">
</el-tree>
...
methods: {
handleCheckChange(data, checkedNodes) {
checkedNodes.forEach(node => {
if (node.children) {
if (node.checked) {
this.$refs.tree.setCheckedKeys(node.children.map(child => child.id), false);
}
}
});
}
}
```
在 handleCheckChange 方法中,遍历选中的节点,如果节点有子节点,则取消选中子节点。这里通过 this.$refs.tree.setCheckedKeys 方法实现取消选中操作,该方法接受两个参数,第一个参数是一个数组,包含需要取消选中的节点的 node-key 值,第二个参数是一个布尔值,用于指定是否勾选节点。在本例中,将第二个参数设置为 false 即可实现取消选中操作。
阅读全文