我想通过条件在我的图形上附加text
节点。我正在尝试这个,但没有工作。
这样做的正确方法是什么?
that.texts = that.groupElement.selectAll(label+"text").data(that.data).enter();
这种方法不起作用:
this.texts.append(function(d, i) {
if(i== 0 && that.elementId === "paymentGraph") {
return "text" //so only one let created!
}})
.attr({
class : this.elementId + "title"
})
.text("Total Contract Amount")
.style("text-anchor", "middle");
方法工作在这里:(但我有2个text
节点,1个是空的)
this.texts.append("text") //adding 2 text element.
.attr({
class : this.elementId + "title"
})
.text(function(d,i) {
if(i==0 && that.elementId === "paymentGraph")
return "Total Contract Amount"; //only one required
})
.style("text-anchor", "middle");
任何人都帮我显示正确的方式来附加节点吗?
提前致谢。
答案 0 :(得分:2)
append
不是你想要成为条件的地方....
append
采用节点类型,并且您的函数不会返回任何一半的时间。
您应该使用选择器过滤掉要追加的元素以及要追加的数量的数据。
我觉得你看起来像
that.texts = that.groupElement.select("#paymentGraph")
.selectAll(label+"text").data([that.data[0]]).enter();
this.texts.append("text")
.attr({class : this.elementId + "title"})
.text("Total Contract Amount")
.style("text-anchor", "middle");
或可能
if(that.elementId === "paymentGraph") {
that.texts = that.groupElement.selectAll(label+"text").data([that.data[0]]).enter();
this.texts.append("text")
.attr({class : this.elementId + "title"})
.text("Total Contract Amount")
.style("text-anchor", "middle");
}