次のオブジェクトがあります。
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
、null 要素の配列になります。
この null 戻り値の原因は何ですか?また、常に更新を取得し、null の配列を返さないようにするにはどうすればよいですか?
UPDATE : LabelsData は、サイズ 183 のオブジェクトの配列です。配列の 1 つのエントリのサンプルを次に示します。
id: "AF"
labelPos: Array[2]
labelPosition: "top-right"
name: "Afghanistan"
neighbourhood: Object
size: 33397058
x: 1349.696941
y: 60.524
頻繁に更新され、その変更に基づいて、実際に SVG 要素を変更する必要があります。