鉴于以下布局:D3 V4更新,模式的组
<g>
... // many nodes
<g>
<circle></circle>
<text></text>
</g>
...
</g>
如何将正确的更新模式看起来像D3 V4? (?) 我有什么在合并作为参数使用,多久我得打电话合并
我创建了小提琴的工作示例(仅在节点节点+圆圈+文?):https://jsfiddle.net/cvvfsg97/6/
代码:
function update(items) {
node = nodeLayer.selectAll(".node")
.data(items, function(d) { return d.id; })
node = node.enter() // insert
.append("g")
.attr("class", "node");
node.append("circle") // insert
.attr("r", 2.5)
.attr('class', 'circle')
.merge(nodeLayer.selectAll('.node > circle')) // is this correct?! // merge
.attr('fill', 'red') // just for testing purposes
.exit().remove(); // exit
node.append("text") // insert
.attr("dy", 3)
.text(function(d) { return d.name; })
.merge(nodeLayer.selectAll('.node > text')) // is this correct?! // merge
.attr('fill', 'green') // just for testing purposes
.exit().remove();
node.merge(nodeLayer.selectAll('.node')) // is this correct?! // merge
.attr('class', 'anotherClass')
.exit().remove(); // does not work // exit
}
有人能带来一些清晰度如何使用输入(条款),合并(),在组退出()?
我很可能喜欢在每个阶段对每个元素进行更改。
更新:我简单的例子,我不需要链接或力布局。我的问题只是关于更新模式,而不是关于力量。更新后的jsfiddle没有强制布局。
你见过https://bl.ocks.org/mbostock/3808218 ?它已更新合并 – softwarenewbie7331
@ Frame91,我很高兴你意识到你有两个不同的问题在这里:一个关于更新模式本身和其他如何更新部队。他们是完全不同的问题。现在的问题是,解决您的一般问题(更新模式)的任何答案都无法正确解决部队问题,因为您现在有两个答案。因此,我建议您删除此问题并发布另一个问题,关于如何为包含文本和圈子的组创建更新模式(并且将很容易回答)。 –
我对力量布局不感兴趣。我只关心更新模式。我只是在jsfiddle上使用了一个现有的例子,它恰好有一个强制布局。对于混淆抱歉;) – Frame91