使用带有MEAN堆栈的D3

时间:2014-12-11 15:58:09

标签: angularjs d3.js nvd3.js mean-stack

我是 MEAN (所有网络技术)和 D3 的新手。我正在尝试将 D3,dc.js 包含到我的应用程序中。

我在 config / all.js 中添加了所有js文件,nvd3包含了角度模块,并在 public / config.js 中添加了该文件。我的问题是如何在控制器内部使用D3?

this link的帮助下,我能够将D3包括如下

     //Load D3 into the application
    var scriptTag = $document[0].createElement('script');
    scriptTag.src = 'http://d3js.org/d3.v3.min.js';
    scriptTag.type = 'text/javascript';
    scriptTag.onreadystatechange = function () {
        if (this.readyState === 'complete') onScriptLoad();
    }
    scriptTag.onload = onScriptLoad;
    var s = $document[0].getElementsByTagName('body')[0];
    s.appendChild(scriptTag);

由于nvd3引用了' d3',我为nvd3做了同样的事情但是angular-nvd3指令却在抱怨' nv'在nvd3.js文件中定义。

任何人都可以让我知道 1.如何包含第三方库 2.有没有办法推迟依赖(在我的情况下为angular-nvd3),直到加载依赖(' nvd3.js') 谢谢

1 个答案:

答案 0 :(得分:0)

不要在控制器中包含任何d3调用,而是可以在指令中引用它并在app.all配置文件中包含d3的引用。

或者使用服务加载库并返回一个单例并在指令中使用它,看看这个post非常有用,它描述了如何使用d3和angular。

你可以采取任何一种方式,但要小心,不要混淆方法。