d3.event。已在d3版本4中加载

时间:2019-03-13 09:02:56

标签: javascript d3.js

我想在加载数据时显示进度栏。我找到了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

如何更改更新?

1 个答案:

答案 0 :(得分:0)

因为d3.eventnull。您可以使用.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)");
});