我想繪製節點(對於力佈局,但在這個問題中,我只留下節點,以最小化代碼),它具有位置,顏色,文本等屬性,並使用g
內的多個元素繪製。如何更新d3中的子元素?
我想實現「一般更新模式」,這裏就是我:
var update = function(data) {
var nodes = svg.selectAll('g').data(data);
var nodeenter = nodes.enter().append('g')
// append + update
nodes.attr('transform', function(d, i) {
return 'translate(' +
(radius + i * radius * 2) + ',' +
(height/2 + d.height)
+')';
});
// append
nodeenter.append('circle')
.attr('r', radius)
.style('fill', function (d) { return d.color; });
nodeenter.append('text')
.text(function (d) { return d.text });
// remove
nodes.exit().remove();
};
它更新組transform
屬性,它增加了與子元素刪除節點,但我怎麼更新中的屬性子元素,如circle
的fill
和text
的"text"
?
這裏的jsfiddle所有的代碼,這說明了這個問題:http://jsfiddle.net/2kqLC/2/
太好了!我在調用'data(function(d){return [d];})''的時候掙扎得太多,不知道這是完全不必要的。 – Bunyk