生成一个Tree
Tree的根节点以及子节点如下:
this.treeData = [
{ id: 1, label: 'FRC DC', children: [
{ id: 2, label: 'DC-APIC', children: [] },
{ id: 3, label: 'DC-ACI-SPINE', children: [] },
{ id: 4, label: 'DC-ACI-CPULEAF', children: [] },
{ id: 5, label: 'DC-ACI-EDGELEAF', children: [] },
{ id: 6, label: 'DC-ACI-SVCLEAF', children: [] },
{ id: 7, label: 'DC-UCS-FIC', children: [] },
{ id: 8, label: 'DC-UCS-OCP', children: [] },
{ id: 9, label: 'DC-UCS-ESX', children: [] },
{ id: 10, label: 'DC-UCS-BM', children: [] },
]},
];
还需添加第三层Tree的节点,也就是叶子节点。
此时存放叶子节点数据的对象(假设为childData),存放在store中。对象的每个元素包含了节点的类型(也就是label)和名称,根据label来判断父节点是哪个,将其添加进去。
起初在mounted阶段调用addTreeChild()方法,该方法用于动态添加叶子节点。但是
mounted阶段页面还未渲染完成,拿到的childData为空。自然也没有叶子节点添加进去。
想去增加一个事件来去调用addTreeChild()方法,没有找到合适的事件。
解决
最后在watch中监听childData对象是否为空,决定要不要去调用addTreeChild()方法。解决了Tree叶子节点无法添加的问题。
watch: {
childData () {
if (this.childData.length != 0) {
this.addTreeChild();
}
}
},