0

DOM の子ノードのデータ属性を更新できません。私は SVG を使用しており、データの配列を親グループ ('g') 要素にバインドしています。グループには、円といくつかのテキストが含まれます。最初に円を作成すると、親 'g' からのデータが自動的に渡され、円にバインドされます。私が理解できないのは、親の「g」要素のデータを更新するときに、子の「サークル」ノードのデータを更新する方法です。

私がやろうとしていることを説明する例を次に示します。

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__; })

これがどのように達成されるかについて誰か提案がありますか?

4

1 に答える 1