我有example中的树。 当我删除一些节点时,应该更新树。但我不想完全清理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();
}
以下是代码 - JSfiddle link
在没有完全重绘的情况下正确绘制树的最佳方法是什么?
我试图更新深度,但没有帮助
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();
}
答案 0 :(得分:1)
您需要为圈子和链接添加更新功能。
由于您只进行了添加和删除,因此正在添加和删除元素,但是当需要更新元素时,不会执行任何操作。通过在任何更改时添加圆圈和链接的更新功能,它们将“更新”到新位置。
// ** UPDATE CIRCLES ***
node.attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; })
// *** UPDATE LINK ***
link.attr("d", diagonal);
以下是更正的小提琴:http://jsfiddle.net/t0mhsauf/15/
希望这有帮助。