【问题标题】:D3 SVG transition issue after deleting few nodes删除几个节点后的 D3 SVG 过渡问题
【发布时间】:2019-01-02 16:08:09
【问题描述】:

我在jsfiddle 中遇到了一个奇怪的问题。如果我删除几个现有节点并稍后添加新节点,节点的转换不会保持不变。

此方案运行良好

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

这个场景有问题(唯一的区别是我们要先删除一个节点,然后点击reset按钮):

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

【问题讨论】:

    标签: javascript d3.js


    【解决方案1】:

    这个问题看起来像当你删除一个节点时,你正在创建一个对links 的新引用,它与你的强制布局不同步:

    links = links.filter...
    

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

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

    【讨论】:

    • 绝对精彩@Steve。我花了几个小时来解决这个问题:)
    • 这个问题是不是很明显,或者您必须花一些时间才能弄清楚?如果打扰到你,请见谅。
    • 我花了大约一个小时才弄明白,主要是因为我怀疑还有其他一些代码行。我之前也遇到过类似的强制布局同步问题,因此我知道保持引用最新可能是问题所在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 2016-03-26
    相关资源
    最近更新 更多