AngularJS& D3.js:如何处理复杂的$ watch值传递?

时间:2014-05-12 21:29:13

标签: angularjs d3.js

以下是我的情况:我想绘制一组数据,折线图和饼图的两种表示形式。饼图可以反映折线图,但必须首先将数据处理为饼图格式。

我的控制器有 lineData pieData

我的折线图指令绘制折线图并在其上有一个按钮来添加数据。它还会相应地监视数据和更新。数据通过双向绑定传递给它,因此每当我按下此按钮时,控制器上的数据也会更新。

我想要做的是在控制器上设置 watch 。当它看到数据已被指令更新时,它应该处理/更改饼图的数据。饼图应该像折线图一样自动更新。饼图更新很简单。

问题是我正在创建很多这些行/饼对,我不知道如何在控制器上设置watch语句。如果我有[A,B,C]的数据集(3对图表),我必须循环并附加一个watch语句来观察A,B和C中的每一个。(如果我设置了watch语句在整个阵列上,有没有办法让它知道A,B或C中的哪一个发生了变化?)这看起来有点混乱但是我只是想要第二个意见以及我应该怎么做或者整个过程是否可以以更简单的方式完成。

目前,对数据的更改发生在折线图指令中,传播到处理它的控制器,然后传输到饼图指令。

1 个答案:

答案 0 :(得分:0)

如上所述:

  

这听起来像过多的$手表。如果他们都在观察相同的值,你可能最好在一个地方使用$ watch,Angular事件用于$ broadcast / $ emit然后在其他地方用$ on捕获事件。或者您可以使用服务管理数据和指令互通。我的原始评论中引用了这两种方法。我们必须看到有关您的应用程序的更多具体细节(例如您的指令,控制器和HTML布局的伪代码示例),以便更仔细地考虑您的用例并提出更具体的建议。

<强>参考