首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除某些节点时更新D3树

删除某些节点时更新D3树
EN

Stack Overflow用户
提问于 2016-10-14 14:38:42
回答 1查看 578关注 0票数 0

我有一棵树,就像在示例。当我删除一些节点时,应该更新树。但我不想彻底清理svg和重绘树。删除的代码:

代码语言:javascript
复制
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链路

在没有完全重绘的情况下,正确绘制树的最佳方法是什么?

我试图更新深度,但没有帮助。

代码语言:javascript
复制
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();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-14 21:36:16

您需要为圆圈和链接添加更新函数。

因为只有add和remove,所以元素被正确地添加和删除,但是当一个元素需要更新时,什么也不做。通过添加圆和链接的更新函数,当任何变化时,它们将被“更新”到他们的新位置。

代码语言:javascript
复制
// ** UPDATE CIRCLES ***
node.attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; })

// *** UPDATE LINK ***
link.attr("d", diagonal);

以下是修正过的小提琴:http://jsfiddle.net/t0mhsauf/15/

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40045853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档