D3.js の「更新」パターンをいじっています。「変更」ボタンを押すとデータが更新される単純な棒グラフを作成しています。
私の問題は、「変更」ボタンを押すと、レンダリングされた最初の 3 つのバーが再レンダリングされないことです。デバッグしたところ、データが適切に適用された (__data__
正しい) ことがわかりましたが、再適用は失敗しました。
ここに私のコードとCodePenでのリンクがあります:
var myData = [ 100, 200, 300 ];
d3.select('body').append('button').text("Change").on("click", function() {
myData = [200, 400, 600, 700, 800, 900, 1000];
update(myData);
});
var svg = d3.select('body').append('svg')
.attr("class", "chart")
.attr("y", 30);
var update = function(data) {
var bars = svg.selectAll('g')
.data(data);
var groups = bars.enter()
.append("g")
.attr("transform", function(d,i) {return "translate(0," + i*25 + ")"});
groups
.append("rect")
.attr("height", 25)
.attr("fill", "pink")
.attr("stroke", "white");
groups
.append("text")
.attr("x", 10)
.attr("y", 18)
.attr("fill", "red");
bars.selectAll("rect")
.attr("width", String);
bars.selectAll("text")
.text(String);
};
update(myData);