我有以下对象:
var dataInfo = d3.select("#" + chartRenderDiv)
.select(".labelLayer")
.selectAll(".labelNode")
.data(labelsData, function(d){return d.id;});
之后,我对应它来创建基于它的 SVG 元素:
var labelContainer = dataInfo.enter()
.append("g")
.attr("class", "labelNode")
.attr("cursor","pointer")
.call(dragInteractive);
最后我放开了变量:
labels.exit().remove();
代码工作得很好,但是当我重新绘制时,同时label
不断从更新的数据源获取更新,labelContainer
将是一个空元素数组。
这个空返回值的原因是什么,应该如何做才能始终获取更新并且不返回空数组?
更新:LabelsData 是一个大小为 183 的对象数组。这是该数组的一个条目的示例:
id: "AF"
labelPos: Array[2]
labelPosition: "top-right"
name: "Afghanistan"
neighbourhood: Object
size: 33397058
x: 1349.696941
y: 60.524
它会经常更新,并根据其更改,实际上应该更改 SVG 元素。