用el-tree控制多个el-drawer的显示并且点击新的el-tree隐藏上一个el-drawer并显示新的
时间: 2023-10-20 19:13:53 浏览: 139
控制Div显示和隐藏
你可以使用以下代码实现:
```
<template>
<div>
<el-tree :data="treeData" @node-click="handleNodeClick"></el-tree>
<el-drawer v-model="drawerVisible" :before-close="beforeDrawerClose">
<!--drawer内容-->
</el-drawer>
</div>
</template>
<script>
export default {
data() {
return {
treeData: [
{
label: '节点1',
children: [
{ label: '子节点1' },
{ label: '子节点2' }
]
},
{
label: '节点2',
children: [
{ label: '子节点3' },
{ label: '子节点4' }
]
}
],
drawerVisible: false,
currentDrawerKey: ''
};
},
methods: {
handleNodeClick(data, node) {
const key = node.key;
if (key === this.currentDrawerKey) {
// 点击同一个节点,直接返回
return;
}
// 隐藏上一个drawer
this.drawerVisible = false;
this.currentDrawerKey = key;
// 显示新的drawer
this.$nextTick(() => {
this.drawerVisible = true;
});
},
beforeDrawerClose(done) {
this.drawerVisible = false;
this.currentDrawerKey = '';
done();
}
}
};
</script>
```
在这个例子中,我们先在页面上渲染一个 `el-tree` 组件和一个 `el-drawer` 组件。当点击树节点时,我们先隐藏上一个 `el-drawer`,然后显示新的 `el-drawer`,实现了控制多个 `el-drawer` 显示的功能。我们还需要记录当前显示的 `el-drawer` 对应的节点 `key`,这样可以在点击同一个节点时避免重复操作。同时,我们也需要在 `el-drawer` 关闭前清除记录的 `currentDrawerKey`,避免出现逻辑错误。
阅读全文