我正在用 d3 渲染数据。我有一个nodes
列表,我使用 .enter() 从中构造了一堆 SVG 组,如下所示(简化):
nodes = [{name: "Fred"}, {name: "Barney"}];
var node = vis.selectAll(".node")
.data(nodes)
.enter().append("svg:g")
.attr("class", "node");
var circ = node.append("svg:circle")
.attr("x", 0)
.attr("y", 0)
.attr("r", 10)
node.append("svg:text")
.attr("dx", 0)
.attr("dy", 0)
.text(function(d) { return d.name });
但是,如果我编辑 listitem 的name
,SVG 文本元素不会更新(因为它的text
attr 仅在创建时调用)。如何告诉 d3 “重新创建”与更改的列表项相对应的 SVG 组?我这样做是作为强制布局的一部分,所以我可以text
在每个刻度上设置 attr,但这很不雅。