代码之家  ›  专栏  ›  技术社区  ›  nyi

删除少量节点后的D3 SVG转换问题

  •  3
  • nyi  · 技术社区  · 7 年前

    我面临着一个奇怪的问题 jsfiddle . 如果我删除很少的现有节点并在以后添加新节点,节点的转换不会保持不变。

    这种情况很好 :

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

    connected nodes moving with the main node

    这个场景有问题 (唯一不同的是我们要先删除一个节点,然后单击 重置 按钮):

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

    Connected nodes not moving when the node is dragged

    1 回复  |  直到 7 年前
        1
  •  1
  •   Steve    7 年前

    问题看起来是这样的,当您删除一个节点时,您正在创建对 links 与您的强制布局不同步:

    links = links.filter...
    

    要解决此问题,只需添加: force.links(links); 以更新强制布局的引用。

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