【发布时间】:2014-05-29 07:57:56
【问题描述】:
我最近开始使用 NVD3 的出色角度指令来构建 D3 图表。确实,它们很光滑。但是,我在回调方面遇到了很多困难。当我使用 nv.addGraph() 添加回调时,回调工作得很好,就像在 Alex's answer 和 examples page 中一样。我在these SO answers 中的其他建议也取得了不同程度的成功。但是为了让我公司的其他初级程序员更容易,我想使用一个 HTML 指令,就像 examples on github 上显示的那样。像这样的:
<nvd3-multi-bar-chart
data="monthData"
id="monthDataChart"
... other properties ...
callback="monthCallback">
<svg></svg>
</nvd3-multi-bar-chart>
我的作用域中名为monthCallback 的函数尝试将属性(例如标题)和事件(例如点击)附加到图表中的每个.nv-bar。问题是图表在数据从 ajax 请求返回之前开始呈现,因此在页面上有任何 .nv-bar 之前触发了 monthCallback。 (注意:回调是否用括号声明似乎没有区别,即 callback="monthCallback" 与 callback="monthCallback()")
我考虑使用workaround by liptga 或DavidSouther 的答案,但将回调链接到转换似乎是解决此问题的错误方法。使用 HTML 指令让回调在正确的时间触发的任何其他建议?
【问题讨论】:
-
应该提到,使用指令的另一个关键优势是利用 Angular 的绑定和自动更新。使用 nv-addGraph() 消除了这种敏捷性。
标签: javascript angularjs d3.js callback nvd3.js