Bostock的d3对象常量示例:d3.transition()的效果是什么?

时间:2016-11-09 22:09:18

标签: d3.js each transition duration

完整的小提琴:https://jsfiddle.net/scottbrown0001/o7qL4dpr/

我正在尝试模仿Mike Bostock的对象恒定示例https://bost.ocks.org/mike/constancy/,我无法弄清楚他的第133行each()选择了什么:

function change() {
  clearTimeout(timeout);

  d3.transition()
    .duration(altKey ? 7500 : 750)
    .each(redraw);
  }

我在我的小提琴示例中使用了看似相同的构造,虽然它似乎确实使转换效果运行但我看不到较慢的持续时间。一般来说,这个构造d3.transition.each()在具体细节中选择了什么?看起来它可能是某种“主转换”,但我看不出each()迭代是如何工作的。我必须有一些关键的区别,但我没有看到它。

1 个答案:

答案 0 :(得分:2)

就像你的另一个问题一样,这与d3 v3 vs d3 v4有很大关系。您将无法使用此代码在v4

中重现该行为

查看d3 v4发行说明的this section,其中mbostock解决了transition.each中的更改:

  

这种方法取代了3.x中过渡的深刻神奇行为。在4.0中,transition.each与selection.each相同

在第3版中,transition.each与此处记录的不同:https://github.com/d3/d3-3.x-api-reference/blob/master/Transitions.md#each

  

[...]立即为当前转换中的每个元素调用指定的函数,使用当前DOM元素的this上下文传入当前数据d和索引i。

所以基本上它不能以相同方式工作的原因是,现在,transition.each将遍历受转换影响的每个元素。