ためのD3 v4の更新-パターン:次のレイアウトを考えるグループ
<g>
... // many nodes
<g>
<circle></circle>
<text></text>
</g>
...
</g>
はどのように正しい更新パターンは、D3のv4の中のように見えるのでしょうか? 私は、マージにパラメータとして使用するために何を持っているか、どのくらいの頻度私は(唯一のノードノード+円+テキストに?)マージを呼び出す必要があります
私はフィドルに取り組んで例を作成した(?):https://jsfiddle.net/cvvfsg97/6/
コード:
function update(items) {
node = nodeLayer.selectAll(".node")
.data(items, function(d) { return d.id; })
node = node.enter() // insert
.append("g")
.attr("class", "node");
node.append("circle") // insert
.attr("r", 2.5)
.attr('class', 'circle')
.merge(nodeLayer.selectAll('.node > circle')) // is this correct?! // merge
.attr('fill', 'red') // just for testing purposes
.exit().remove(); // exit
node.append("text") // insert
.attr("dy", 3)
.text(function(d) { return d.name; })
.merge(nodeLayer.selectAll('.node > text')) // is this correct?! // merge
.attr('fill', 'green') // just for testing purposes
.exit().remove();
node.merge(nodeLayer.selectAll('.node')) // is this correct?! // merge
.attr('class', 'anotherClass')
.exit().remove(); // does not work // exit
}
誰かが、)(マージ)(入力の使用方法の面でグループでexit()をいくつかの明快さを持ってもらえますか?
私は潜在的にすべての要素のすべての段階で変更を行うのが好きです。
更新:私は、私がリンクまたはforce-レイアウトを必要としない例を簡素化。私の質問は、武力についてではなく、更新パターンについてだけです。更新されたjsfiddleにはforce-layoutはありません。
は、あなたが見てきたhttps://bl.ocks.org/mbostock/3808218 ? merged – softwarenewbie7331
@ Frame91で更新されました。ここでは2つの異なる質問があることに気付きました.1つは更新パターンそのものに関するもので、もう1つは力の更新方法に関するものです。それらは実質的に異なる質問である。今の問題は、あなたの一般的な質問(更新パターン)に対処するすべての回答が、あなたが現在持っている2つの回答のように、力の問題に正しく対処できないということです。したがって、この質問を削除し、テキストとサークルを含むグループの更新パターンを作成する方法については、別の記事を投稿することをお勧めします(簡単に回答できます)。 –
私は力のレイアウトに興味がありません。私は更新パターンだけを気にします。私はちょうどjsfiddleの既存の例を使用しました。混乱して申し訳ありません;) – Frame91