在D3强制布局中更新节点'子元素位置

时间:2014-08-30 07:30:11

标签: javascript d3.js visualization force-layout

我是d3的新手。今天早些时候我尝试了一些d3力布局的例子,它运作得很好。

但是当我DIY它并使每个节点成为g元素,并将子circletext附加到其上时,这些孩子的位置不会自动更新。

这是jsFiddle

顺便说一句,在这个例子中,我调用了node.append(' someElement')3次

- 第一次: node.append('g')&gt;它变为<g></g>

- 第二次:node.append('circle')&gt;它变为<g><circle></circle></g>

-last time:node.append('text')&gt;它变为<g><circle></circle><text></text></g>

正如我所想,上一次也应该将text包括在circle中,但不是,为什么?感谢

1 个答案:

答案 0 :(得分:0)

最后我解决了这个问题。

使用transform是更新父项绑定到数据的子项位置的正确方法。

所以将textcircle添加到g节点是正确的方法。

这是jsfiddle update

我第二个问题的回答是,

第二个和第三个附加内容附加到g,因为之前有一行代码

    node = node.enter()
        .append("g")
        .attr("class", "node");