Javascript 更新enter().append()块d3.js中的数据

Javascript 更新enter().append()块d3.js中的数据,javascript,d3.js,angularjs-directive,Javascript,D3.js,Angularjs Directive,我正在使用D3js和AngularJS开发一个交互式可视化工具,用于从web服务等检索数据 视觉效果基于分区布局。它接收一个3级嵌套JSON对象,该对象使用d3.partition.nodesJSON转换为节点 最初加载视觉对象时,它会在enter.append块内的节点上设置一些附加属性,如下所示: scope.path = viz.selectAll("path") .data(nodes, function(d){ return d.pk; }); // Make sure to h

我正在使用D3js和AngularJS开发一个交互式可视化工具,用于从web服务等检索数据

视觉效果基于分区布局。它接收一个3级嵌套JSON对象,该对象使用d3.partition.nodesJSON转换为节点

最初加载视觉对象时,它会在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块之外的数据。我的问题是什么是一个很好的方法,我应该如何重新呈现视觉效果?节点的数据在单击时更改,并且可能对父节点有影响


所有的帮助都值得赞赏。

< P >一些想法,希望你认为这些有用。如果计划更改角度模型中使用的数据,请确保在某些情况下更改数据后运行$digest可能会消耗资源,或者使用$watch跟踪变量的更改,并在需要时采取行动,例如,在变量更改后重新渲染视觉效果。否则,Angular不知道这些变化。 以下链接可能会有所帮助: