我似乎无法让 .enter() 和 .exit 路径正常工作。对于下面的代码,每次我尝试重绘路径时,它都会保留旧路径。
我冒昧地猜测问题出在 .attr("d",stepline(csProg)) 上。我在想它应该更像 .attr("d",function(d) { stepline(d); }) 或类似的东西,但我无法让它工作。有什么建议么?
function drawCloseChart(mysvg,mydata,cx1,cx2,cy1,cy2,oq)
{
var x = d3.scale.linear().domain([360*60, 390*60]).range([cx1, cx2]),
y = d3.scale.linear().domain([0,oq]).range([cy1,cy2]),
z = d3.scale.category10();
var targetg = mysvg.append("svg:g");
//code to draw x-axis
//code to draw y-axis
var stepline = d3.svg.line()
.x(function(d) { return x(d.time); })
.y(function(d) { return y(d.val); })
.interpolate("step-after");
var chartData = [];
chartData.redraw = function()
{
var cpg = cprog.selectAll("path").data(csProg);
cpg.enter()
.append("path")
.attr("d",stepline(csProg))
.attr("fill","none")
.attr("stroke-width","2")
.attr("stroke","black");
cpg.exit().remove();
}
chartData.redraw();
return chartData;
}
稍后在我会调用的代码中(或类似的东西):
setInterval(function() { updateDate(); chartData.redraw(); },1000)
但是,旧路径不会被删除。
编辑:这是一个 JSFiddle 与我看到的问题。http://jsfiddle.net/namit101/k8kUZ/26/