我正在编写一个基本的有向图编辑器并从JSON加载初始图。
我的问题是删除节点经常会留下剩余的行(通常与我正在删除的节点完全无关 - 你可以通过浏览和删除一堆节点来复制它)。其余的工件也不会随着力布局移动。
我的理解是link.exit().remove();
应删除与我当前数据集不匹配的任何链接:
link = link.data(links,function(d){return d.source.Id + "_" + d.target.Id;});
我的示例链接:
https://jsfiddle.net/slizice/9a8d6zsm/60/
(点击一个节点,点击delete
/ backspace
删除)
在我开始使用更大的数据集之前,我没有观察到这一点。
任何想法都会非常感激!
修改
看起来某些重复的链接可能是负责任的。一旦我找到解决方案,我会发布一个答案。
答案 0 :(得分:0)
在某些情况下,生成链接的服务器端代码看起来多次遍历它们,生成重复项。
要在客户端处理重复项,我只需先检查数组:
exists = false;
edges.forEach(function(e) {
if ((e.source.Id == sourceNode.Id) && (e.target.Id == targetNode.Id)) {
exists = true;
}
});
if (!exists) {
edges.push({
source: sourceNode,
target: targetNode,
value: e.Value
});
}