javascript - 删除几个节点后的 D3 SVG 过渡问题
问题描述
我在这个jsfiddle中遇到了一个奇怪的问题。如果我删除几个现有节点并稍后添加新节点,则节点的转换不会保持不变。
这种情况工作正常:
- 运行jsfiddle。
- 点击
reset
按钮 - 选择
ctee
连接到其他几个节点的节点并拖动。 - 所有连接的节点都应跟随主拖动节点。
- 查看以下屏幕截图,连接到节点的
ctee
节点也随着ctee
.
这种情况有一个问题(唯一的区别是我们要先删除一个节点,然后单击reset
按钮):
- 运行jsfiddle。
- 右键单击
GW
节点并选择选项Stop
。 - 这将从屏幕上删除节点。
- 现在点击
reset
按钮 - 选择
ctee
连接到其他几个节点的节点并拖动。 - 理想情况下,所有连接的节点都应该跟随主拖动节点,但它不起作用。连接的节点保持在其原始位置。
- 查看以下屏幕截图,连接到节点的
ctee
节点没有随着ctee
.
- 查看以下屏幕截图,连接到节点的
解决方案
问题看起来像当您删除一个节点时,您正在创建一个links
与您的强制布局不同步的新引用:
links = links.filter...
要解决此问题,您只需将:添加force.links(links);
到它之后的行以更新强制布局的引用。
推荐阅读
- javascript - 输入特定字符时,在克林特写入输入字段期间更改文本颜色
- scikit-learn - 在 PLS 模型中查找每个原始描述符的整体贡献
- dataweave - 如何将数据映射到 Dataweave 中的数组?
- javascript - 创建可折叠菜单和子菜单时如何修复间距
- android - 是否可以用房间实现实时分页(aac 库)?
- java - 向异常添加数据
- python - 如何停止计时器 discord.py
- selenium - Selenium InternetExplorerDriver 代理 C#
- javascript - JQuery 将 ID 获取到带有循环的 php 表的问题
- django - 如何为模型中的 dateField 创建月/年的 django-filter 自定义过滤器?