Я пытаюсь применить это предложение, чтобы поймать конец нескольких переходов. Но в моем локальном файле появляется Uncaught TypeError: t.call is not a function
ошибка. Код выглядит следующим образом:
var svg = d3.select('svg');
function endall(transition, callback) {
if (typeof callback !== "function") throw new Error("Wrong callback in endall");
if (transition.size() === 0) { callback() }
var n = 0;
transition
.each(function() { ++n; })
.each("end", function() { if (!--n) callback.apply(this, arguments); });
}
for (var i=0;i<5;i++) {
svg.append('rect')
.attr("x",i*60)
.attr("y",50)
.attr("height",50)
.attr("width",50)
.style("fill","#ff0000");
}
svg.selectAll("rect:not(.active)")
.transition()
.duration(1000)
.style("fill","#00ff00")
.call(endall, function() { alert("all done") });
Когда я портирую его на jsfiddle с использованием шаблона D3, он работает хорошо. С другой стороны, когда я портирую его на jsfiddle без шаблона D3, я получаю ту же ошибку.
Видно чего-то не хватает, но что не могу понять.