我想在加载数据时显示进度栏。我找到了Mike Bostock的代码: progress events它可以工作,但是它是用d3v3编写的,而我的代码是用d3v4编写的,所以我想将其更新为v版。
到目前为止,我已经将var arc = d3.svg.arc()
更改为var arc = d3.arc()
,但是我被困在d3.event.loaded
上,控制台显示:Uncaught TypeError: Cannot read property 'loaded' of null
。
如何更改更新?
答案 0 :(得分:0)
因为d3.event
是null
。您可以使用.loaded
来执行以下代码。有更好的方法可以做到这一点,但是仅以您的示例为例,下面的方法应该可以工作。
d3.json("https://api.github.com/repos/mbostock/d3/git/blobs/2e0e3b6305fa10c1a89d1dfd6478b1fe7bc19c1e?" + Math.random())
.on("progress", function (d) {
console.log(d.loaded)
var i = d3.interpolate(progress, d.loaded / total);
d3.transition().tween("progress", function () {
return function (t) {
progress = i(t);
foreground.attr("d", arc.endAngle(twoPi * progress));
text.text(formatPercent(progress));
};
});
})
.get(function (error, data) {
meter.transition().delay(250).attr("transform", "scale(0)");
});