vue + elementUI 手动控制tree组件节点的展开状态
在日常工作中,会时常接触到 tree 结构的目录,在手动合并目录之后,不想一个一个再去展开,就需要一个按钮可以帮助用户一键展开 tree 结构,顺着这个需求寻求解决方法
解决方案如下:
<template>
<div id="app">
<el-button ref="openBtn" @click="open">展开</el-button>
<el-button ref="closeBtn" @click="close">收起</el-button>
<el-tree
:data="data"
ref="tree"
node-key="id"
:props="defaultProps"
/>
</div>
</template>
<script>
export default {
name: 'App',
components: {
// HelloWorld
},
data() {
return {
data: [{
id: 1,
label: '一级 1',
children: [{
id: 11,
label: '二级 1-1',
children: [{
id: 111,
label: '三级 1-1-1'
}]
}]
}, {
id:2,
label: '一级 2',
children: [{
id: 21,
label: '二级 2-1',
children: [{
id: 211,
label: '三级 2-1-1'
}]
}, {
id: 22,
label: '二级 2-2',
children: [{
id: 221,
label: '三级 2-2-1'
}]
}]
}, {
id: 3,
label: '一级 3',
children: [{
id: 31,
label: '二级 3-1',
children: [{
id: 311,
label: '三级 3-1-1'
}]
}, {
id: 32,
label: '二级 3-2',
children: [{
id: 321,
label: '三级 3-2-1'
}]
}]
}],
defaultProps: {
children: 'children',
label: 'label'
},
}
},
methods: {
// 展开按钮
open() {
// 控制按钮点击之后失焦
this.$refs.openBtn.$el.blur()
for(let key in this.$refs.tree.store.nodesMap) {
console.log(this.$refs.tree.store.nodesMap[key]);
this.$refs.tree.store.nodesMap[key].expanded = true
}
},
// 收起按钮
close(){
// 控制按钮点击之后失焦
this.$refs.closeBtn.$el.blur()
for(let key in this.$refs.tree.store.nodesMap) {
this.$refs.tree.store.nodesMap[key].expanded = false
}
}
}
}
</script>