1
私はサブ選択削除は
var dataNodes = [
{ id: 1, x: 10, y:30, text: "node 1", muteText: false },
{ id: 2, x: 30, y:50, text: "node 2", muteText: false },
{ id: 3, x: 50, y:70, text: "node 3", muteText: false }
];
私は(あるため、ビジネスの複雑さの多くではない、私の実際のコード)このような機能を使用してDOMの要素を追加したノードのデータのセットを持っています。
function redraw(newData) {
var node = d3
.select("body")
.selectAll("g.node")
.data(dataNodes)
.transition().duration(500)
.attr("transform", d => "translate(" + d.x + "," + d.y + ")");
node.enter()
.append("g")
.attr("class", "node")
.attr("transform", d => "translate(" + d.x + "," + d.y + ")")
.append("text")
.text(d => d.text)
.style("opacity", "0")
.transition().duration(500)
.style("opacity", "1");
node.exit()
.style("opacity", "0");
}
私は、データが更新されます時に、次のすべての操作を行うことができるようにしたい:
- は、ノード を入力追加既存のノードは、ノードが自分の「muteText」プロパティがtrueに変更され得るとき、彼らは
- を再び現れることがあるので、内側のテキストdisapear
を作る移行
質問が不明な場合は教えてください。
ありがとう!入力ノードをフェードインさせることができ、既存のノードを翻訳することができるかどうか知っていますか?私の場合、トランジションが衝突するようです。また、あなたのコードに似たコードで "nodeE.mergeが関数ではありません"というエラーが出る理由を知っていますか? –
@SimonBudin、更新された回答を参照してください。 'nodeE.merge is not a function'と表示される理由はおそらくd3 ** version 3 **を使用しているからです。私の答えはd3 ** version 4 **です。 – Mark
私はその後、アップグレードを計画します!ありがとう! –