更新enter().append()块中的数据d3.js
Updating data in the enter().append() block d3.js
我正在使用D3js和AngularJS从web服务等进行数据检索的交互式可视化。
可视化基于分区布局。它接收一个3层嵌套JSON对象,使用d3.partition().nodes(JSON)将其转换为节点。
最初加载可视化时,它会在enter().append()块中的节点上设置一些额外的属性,如下所示:
scope.path = viz.selectAll("path")
.data(nodes, function(d){ return d.pk; }); // Make sure to have a unique id
scope.path.enter().append("path")
.attr("d", function(d){
// if selected or one of the children is selected, slide out
if(d.selected || d.childrenSelected ){ d.dy = 0.4; }
return arc(d);
});
在我使用AngularJS之前,这对我很有效,因为我假设节点中的每个节点都是通过引用来评估的。因此,每当呈现的节点发生变化时,节点集合中的节点也会发生变化(它们是相同的)。
在AngularJS中,这个小系统停止工作了,我正在重新考虑这个方法。我希望只修改enter().append()块之外的数据。我的问题是什么是一个很好的方法,我应该如何重新渲染视觉效果?节点的数据在单击时发生变化,并且还可能对父节点产生影响。一些想法,希望你认为这些有用。如果你打算改变Angular模型中使用的数据,一定要在改变数据后运行$digest(在某些情况下可能会消耗资源),或者使用$watch来跟踪变量的变化,并在需要时采取行动(例如,在变量被改变后重新渲染视觉效果)。否则,Angular不会知道这些变化。
以下链接可能会有所帮助:
http://angular-tips.com/blog/2013/08/watch-how-the-apply-runs-a-digest/
http://www.benlesh.com/2013/08/angularjs-watch-digest-and-apply-oh-my.html
相关文章:
- d3.hexbin插件-动态定义颜色域以适应数据
- 如何为d3.js图表输出组织/嵌套数据
- 添加新数据时D3.JS条形图列偏移量
- 将基本CSV数据加载到D3
- 具有关联数组数据集的D3.js表
- d3在数据更新时错误地附加了dom元素
- d3.csv有很多数据,只画了一个月
- 基本D3.js:使用数据键
- 基本D3.js:如何将具有其他属性的数据绑定到元素
- 如何在D3.js中绘制地图投影上的点,并使用范围滑块过滤数据
- 通过内部数组将JSON数据导入D3.js+Google Map
- 具有多个数据集的分组散点图D3
- 如何使用D3.js根据json中给出的数据在Heatmap中创建可变大小的矩形
- 基于数据d3.js绑定svg梯度
- 其中存储有数据d3
- 如何动态更改力布局图中的数据?D3.
- 将 MySQL 查询结果转换为分层数据 - D3
- 使用复选框过滤数据- D3
- 更新enter().append()块中的数据d3.js
- 同时转换xAxis和数据- D3.js