删除几个节点后出现D3 SVG过渡问题

时间:2018-07-25 18:39:00

标签: javascript d3.js

在此jsfiddle中,我面临一个奇怪的问题。如果我删除几个现有节点并在以后添加新节点,则节点的过渡将保持不变。

此方案运行正常

  1. 运行jsfiddle。
  2. 点击reset按钮
  3. 选择连接到其他几个节点的ctee节点并拖动。
  4. 所有连接的节点应跟随主拖动节点。
  5. 查看以下屏幕截图,与ctee节点连接的节点也与ctee一起移动。

connected nodes moving with the main node

此方案有问题(唯一的区别是我们将首先删除一个节点,然后单击reset按钮):

  1. 运行jsfiddle。
  2. 右键单击GW节点,然后选择选项Stop
  3. 这将从屏幕上删除该节点。
  4. 现在单击reset按钮
  5. 选择连接到其他几个节点的ctee节点并拖动。
  6. 理想情况下,所有连接的节点都应跟随主拖动节点,但不起作用。连接的节点保持在其原始位置。
      
        
    1. 查看以下屏幕截图,与ctee一起移动的与ctee节点相连的节点
    2.   

Connected nodes not moving when the node is dragged

1 个答案:

答案 0 :(得分:1)

问题看起来像是在删除节点时,正在创建对links的新引用,该引用与您的强制布局不同步:

links = links.filter...

要解决此问题,您只需在其后的行中添加:force.links(links);,即可更新强制布局的参考。

更新的小提琴:https://jsfiddle.net/r1tcj0mf/16/