我有一棵树,就像在示例。当我删除一些节点时,应该更新树。但我不想彻底清理svg和重绘树。删除的代码:
function click(d) {
d.children = d.children[0].children[0].children;
update(); // there is call inside to link.exit().remove(); and node.exit().remove();
}问题是树会崩溃(在移除C和D之后):


这是代码- JSfiddle链路
在没有完全重绘的情况下,正确绘制树的最佳方法是什么?
我试图更新深度,但没有帮助。
function click(d) {
d.children = d.children[0].children[0].children;
d.children[d].depth = d.children[d].depth -2;
update(); // there is call inside to link.exit().remove(); and node.exit().remove();
}发布于 2016-10-14 21:36:16
您需要为圆圈和链接添加更新函数。
因为只有add和remove,所以元素被正确地添加和删除,但是当一个元素需要更新时,什么也不做。通过添加圆和链接的更新函数,当任何变化时,它们将被“更新”到他们的新位置。
// ** UPDATE CIRCLES ***
node.attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; })
// *** UPDATE LINK ***
link.attr("d", diagonal);以下是修正过的小提琴:http://jsfiddle.net/t0mhsauf/15/
希望这能有所帮助。
https://stackoverflow.com/questions/40045853
复制相似问题