2

我有以下对象:

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 元素。

4

0 回答 0