在上面的代码我的.append(“text”)dosent work.I不会在我的链接上插入任何文本。 我尝试使用link.append(“path”)..使用此我可以看到文本但不能看到链接。我想用 link.insert(“path”)仍然能够添加文本,并能够折叠和扩展节点以及链接 文本。请帮忙
var link = svg.selectAll("path.link")
.data(links, function (d) { return d.target.id; });
// Enter any new links at the parent's previous position.
// var link1=link.enter();
link.enter().insert("path", "g")
.attr("class", "link")
.attr("d", function (d) {
var o = { x: source.x0, y: source.y0 };
return diagonal({ source: o, target: o });
});
link.enter()
.append("g")
.attr("class", "link")
.append("text")
.attr("font-family", "Arial, Helvetica, sans-serif")
.attr("fill", "Black")
.style("font", "normal 12px Arial")
.attr("transform", function(d) {
return "translate(" +
((d.source.y + d.target.y)/2) + "," +
((d.source.x + d.target.x)/2) + ")";
})
.attr("dy", ".35em")
.attr("text-anchor", "middle")
.text(function(d) {
console.log(d.target.name);
return d.target.name;
});
答案 0 :(得分:5)
如果没有小提琴或工作代码的链接,这很难回答,但我认为这可能是你所追求的:http://jsfiddle.net/henbox/82pepd2a/9/
您应该在链接上看到与节点文本对应的红色文本(黑色),这些文本应该在节点\链接移动时进行转换。
我创建了一个新变量var linktext
来处理与链接(path
元素)本身分开的文本,因为这是导致路径无法显示的原因。
我还使用insert("g")
代替append("g")
添加了一个全新的g
元素,而不是将g
和text
放在每个path
中}}。这是重要的事情:
// Update the link text
var linktext = svg.selectAll("g.link")
.data(links, function (d) {
return d.target.id;
});
linktext.enter()
.insert("g")
.attr("class", "link")
.append("text")
.attr("dy", ".35em")
.attr("text-anchor", "middle")
.text(function (d) {
//console.log(d.target.name);
return d.target.name;
});
最后我添加了更新'和'删除' linktext
的块使用类似的链接方法。请注意,我还将样式移动到CSS以获得整洁