element-ui的tree树形组件怎么控制全部展开和全部折叠啊?有一个default-expand-all 是否默认展开所有节点的属性,只在第一次初始化tree的时候有效,改变这个属性的值好像不能控制展开折叠,请问有什么方法吗
element-ui的tree树形组件怎么控制全部展开和全部折叠啊?有一个default-expand-all 是否默认展开所有节点的属性,只在第一次初始化tree的时候有效,改变这个属性的值好像不能控制展开折叠,请问有什么方法吗
貌似目前这个 store
对象已经修改过了。目前的对象包含的属性如下截图:
可以通过设置 this.$refs.attrList.store.defaultExpandAll = true;
解决,已亲测
上面没有一个能用的
expandAllStatus: 是控制展开与折叠的状态(true/false)
myTree: 自己的Tree ref名
onExpandAll() {
// 遍历tree结构修改展开与折叠是个异步行为,会耗时间,所以要写promise
let task = new Promise((resolve, reject) => {
this.expandAllStatus = !this.expandAllStatus;
resolve();
}).then(() => {
this.treeNodeExpand(this.expandAllStatus)
})
},
treeNodeExpand(status) {
// 这是个耗时操作
for(var i=0;i<this.$refs.myTree.store._getAllNodes().length;i++){
this.$refs.myTree.store._getAllNodes()[i].expanded = status;
}
},
2023 年了,不知道还有没有用element开发新项目的或者修改问题的。正好也在开发的时候遇到了这堆问题然后上面的回答无一例外在我的情况中(单元素的一级节点)根本不起作用,然后尝试改了一下,思路也是去遍历$refs.tree.store.root.node
,这里会储存所有节点状态,然后更改此处的状态就可以触发dom重新渲染。给出示例代码:
<template>
<div><el-tree :data="treeData" ref="tree" :default-expand-all="false"></el-tree>
<el-button @click="handleExpandAll">展开全部</el-button>
<el-button @click="handleCollapseAll">折叠全部</el-button></div>
</template>
<script>
export default {
data() {
return {
treeData: [
{
id: 1,
label: '一级节点 1',
children: [
{
id: 2,
label: '二级节点 1-1'
},
{
id: 3,
label: '二级节点 1-2'
}
]
},
{
id: 4,
label: '一级节点 2',
children: [
{
id: 5,
label: '二级节点 2-1'
},
{
id: 6,
label: '二级节点 2-2'
}
]
}
]
};
},
methods: {
handleExpandAll() {
const tree = this.$refs.tree;
this.traverseTree(tree.store.root, (node) => {
node.expanded = true;
});
},
handleCollapseAll() {
const tree = this.$refs.tree;
this.traverseTree(tree.store.root, (node) => {
node.expanded = false;
});
},
traverseTree(node, callback) {
if (!node) return;
callback(node);
const children = node.root ? node.root.childNodes : node.childNodes;
if (children) {
children.forEach((child) => {
this.traverseTree(child, callback);
});
}
}
}
};
</script>
点击按钮后通过遍历各个节点更改状态实现展开或折叠
6 回答2.9k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
2 回答2k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
4 回答2.7k 阅读
2 回答977 阅读✓ 已解决
this.$refs.treeX是树对象,通过树对象获取所有的树节点,遍历树节点设置expand属性为true则全部展开,设置为false则全部收起