问题原因:
antvx6中的setChildren()
、setParent()
都是单向绑定,如果使用setChildren()
或设置父节点的children属性,只能让父认子,而子不认父,父节点调getChildren()有值,而子节点调getParent()为null。
解决方案:
使用addChild()
可以双向绑定。如果是通过预设数据的方式,可以在父节点设置children绑定子节点,同时在子节点设置parent绑定父节点,实现双向绑定。
预设数据:
const children = {
id: 'children',
shape: 'custom-node',
label: 'childrenNode',
...
parent: 'parent' // 绑定父节点,getParent()有值,否则无值
}
const parent = {
id: 'parent',
shape: 'custom-node',
label: 'parentNode',
...
children: ['children'] // 绑定子节点
}
Graph.fromJSON([children, parent])
调用API:
const children = graph.addNode({
shape: 'custom-node',
label: 'childrenNode'
})
const parent = graph.addNode({
shape: 'custom-node',
label: 'parentNode'
})
parent.setChildren([children]) // 单向绑定,入参为数组,子项getParent()为null
parent.addChild(children) // 双向绑定,入参为cell对象