Кэшируется ли древовидная карта d3 при передаче ему корневого узла?
Я пытался получить d3 treemap для анимации, и у меня было что-то вроде
<code>App.svg = d3.select("#medals-tree-map").append("svg:svg") .style("width", App.canvasWidth) .style("height", App.canvasHeight) .append("svg:g") .attr("transform", "translate(-.5,-.5)") .attr("id", "container"); App.treemap = d3.layout.treemap() .size([App.canvasWidth + 1, App.canvasHeight + 1]) .value(function(d) { return d.number; }) .sticky(true); function drawGraphFromJson(data) { // Draw the graph var leaves = App.treemap(data); var cell = App.svg.selectAll("g.cell") .data(leaves); // More rendering code } </code>
На основании этого ответа:https://stackoverflow.com/a/9650825/111884
Тем не менее, карта дерева не меняется вообще, когда я звонюdrawGraphFromJson
с новыми данными.
Я исправил проблему, определивApp.treemap
внутриdrawGraphFromJson
т.е.
<code>function drawGraphFromJson(data) { App.treemap = d3.layout.treemap() .size([App.canvasWidth + 1, App.canvasHeight + 1]) .value(function(d) { return d.number; }) .sticky(true); // Draw the graph var leaves = App.treemap(data); var cell = App.svg.selectAll("g.cell") .data(leaves); // More rendering code } </code>
Зачем мне это делать? Есть лиtreemap
кэшироваться при переходе в корневой узел?