1

我开始使用 d3js http://d3js.org,一开始我需要的只是仪表图标。它显示拍卖结束的时间以及拍卖的状态。页面上会有更多图标。这是小提琴http://jsfiddle.net/TdWtC/

第一次加载没问题,但我需要更新方面的帮助。更新时都必须更新背景和指针。主要问题是更新背景重叠指针。可能我做错了,但我定制了类似的片段,无法继续。

这是背景与指针重叠的部分

this.body.append("svg:path")
        .style("fill", color)
        .attr("d", d3.svg.arc()
        .startAngle(this.valueToRadians(start))
        .endAngle(this.valueToRadians(end))
        .innerRadius(0.4 * this.config.raduis)
        .outerRadius(this.config.raduis))
        .attr("transform", function() { return "translate(" + self.config.cx + ", " + self.config.cy + ") rotate(270)" });

感谢帮助

4

1 回答 1

1

问题是您的仪表带不包含在它们自己的g元素中。任何对更新的调用都会在指针元素之后附加波段,从而g出现在它的顶部。您可以通过将带区放入附加在for 指针之前的自己的g元素来轻松解决此问题。g

我在这里进行了这些更改,并对您的代码进行了一些修改——您不需要将波段单独传递给 d3,它可以同时绘制它们。请注意,我只处理.enter()选择(即新元素),因为您没有更改update()调用中的任何数据。要使其适用于更改的数据,您需要为.exit()选择(删除元素,可能只是简单地删除元素segments.exit().remove())和更新的选择(可能是您用来设置选择的开始和结束角度的代码)实现一个处理程序.enter()

于 2013-01-20T12:25:16.707 回答