我在更新DOM中子節點上的數據屬性時遇到問題。我正在使用SVG並將一組數據綁定到父組('g')元素。這些組包含一個圓圈和一些文字。當我第一次創建圓時,來自父'g'的數據會自動傳入並綁定到該圓。當我更新父'g'元素上的數據時,我無法弄清楚如何更新子節點上的數據。D3:更新DOM下的數據
這裏是解釋什麼,我試圖做一個例子:
var test = svg.selectAll("g").data([1,2,3,4]);
test.enter().append("g");
test.append("circle");
我現在有以下DOM:
svg -> g (__data__ = 1) -> circle (__data__ = 1)
g (__data__ = 2) -> circle (__data__ = 2)
g (__data__ = 3) -> circle (__data__ = 3)
g (__data__ = 4) -> circle (__data__ = 4)
現在我要地圖新數據:
var test2 = svg.selectAll("g").data([9,8,7,6]);
其中給出以下DOM:
svg -> g (__data__ = 9) -> circle (__data__ = 1)
g (__data__ = 8) -> circle (__data__ = 2)
g (__data__ = 7) -> circle (__data__ = 3)
g (__data__ = 6) -> circle (__data__ = 4)
我不知道如何讓子圓圈節點繼承父g元素的數據值。
我已經試過類似的事情沒有成功如下:
test2.selectAll("circle").data(function(d) { return d; })
和
test2.selectAll("circle").data(function(d) { return this.parentNode.__data__; })
有沒有人有意見,這是怎麼做到的呢?
如果你在每個'g'中只有一個圓圈,你可以做'test2.select(「circle」);'這會傳播數據。 –
拉斯,這工作!謝謝! – Brian
我也將其添加爲答案。 –