我在动态添加节点时遇到d3树布局问题。
根据节点类型,我向节点添加路径符号,但是在更新时我收到错误,说“#34;路径格式无效"。
Enter和update都使用相同的代码:
nodeUpdate.select("path")
.attr("d", d3.svg.symbol().type(function(d)
{
return self.TypeToShape(d.Type);
})
.size(150))
.attr("transform", function(d)
{
var transform="translate(" + 2 + "," + -1 + ")"
if (d.Type==="e")
{
transform = transform+" rotate(30)";
}
return transform;
})
.style("fill", function(d){
return self.TypeToColour(d.Type);
});
Enter似乎不会导致问题,只会更新。
我是D3的新手,所以我想知道我是否错过了关于d3如何工作的概念,可能会导致这种情况。
请参阅此处的小提琴:http://jsfiddle.net/z15825qu/
答案 0 :(得分:2)
问题是您正在转换SVG符号,这会产生无效的path
s。要修复,只是不要过渡它们:
node.select("path")
.attr("d", d3.svg.symbol().type(function(d) {
return self.TypeToShape(d.Type);
})
完整示例here。