完全小提琴在这里:https://jsfiddle.net/scottbrown0001/o7qL4dpr/
我试图模仿Mike的对象恒恒性示例https://bost.ocks.org/mike/constancy/,但我不知道each()在其第133行中选择了什么:
function change() {
clearTimeout(timeout);
d3.transition()
.duration(altKey ? 7500 : 750)
.each(redraw);
}在我的小提琴示例中,我使用了类似于相同的结构,虽然它确实获得了运行的转换效果,但我看不到持续时间较慢。一般来说,这个构造d3.transition.each()在具体的细节中选择了什么?看起来这可能是某种“主转换”,但我看不出each()迭代是如何工作的。我肯定有一些关键的区别,但我看不出来。
发布于 2016-11-10 00:51:55
就像在另一个问题中一样,这与d3 v3和d3 v4有很大关系。您将无法在v4中使用此代码再现这种行为。
查看本节 of d3 v4发布说明,其中mbostock处理transition.each中的更改:
这种方法取代了3.x中transition.each的神奇行为;在4.0中,transition.each与selection.each完全相同
在v3中,transition.each与这里所记录的不同:https://github.com/d3/d3-3.x-api-reference/blob/master/Transitions.md#each
..。使用当前DOM元素的上下文,立即调用当前转换中的每个元素的指定函数,传递当前数据d和索引i。
所以,它不能以同样的方式工作的根本原因是,现在,transition.each将循环遍历受转换影响的每个元素。
https://stackoverflow.com/questions/40516845
复制相似问题