我有一棵d3树。每个节点都有一个EntityType。如果特定节点的EntityType等于“电池”,则我将其位置设置为比其父节点更远。问题在于,实体类型为“电池”的节点也有子节点,但其位置不会根据该节点的位置进行修改。
这是我修改的代码。
.attr("transform", (d) => {
if(d.data.EntityType === 'Battery') {
return "translate(" + (d.y +100 ) + "," + (d.x) + ")";
}
我使用此行来修改此节点的位置。但是,如何修改其子级的位置?
编辑:
我发现,如果我可以检查节点层次结构中的所有父级,那么如果在其父层次结构中存在一个带有EntityType Battery的节点,则可以相应地设置其位置。
但是现在我必须检查所选节点的完整父级层次结构。这可能吗?
答案 0 :(得分:0)
我找到了解决方案。通过设置节点的深度并使用d3.descendants()属性相应地设置其所有子级的深度,我们可以实现这一点。
还有一个d3.ancestors()属性,用于获取节点的所有祖先。