如何将d3(js库)与angular同使用?

发布于 2022-09-02 15:24:36 字数 860 浏览 14 评论 0

我想用angular封装一个指令,将d3.js画图的功能写进去。
首先我仿照网上的例子,将d3.js用factory包了起来,js文件命名为d3.js

clipboard.png

然后我在 directive.js文件中把d3.js绘制柱状图封装:

clipboard.png

之后在页面中引用了指令
clipboard.png

最后再app.js中注入了依赖如图:

clipboard.png

现在有些报错如下:

clipboard.png

请教如何解决这个问题呢。哪里出了问题?angular新手,请大家在各方面指教。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

节枝 2022-09-09 15:24:36

看你代码的组织结构应该是没有使用到模块管理,那么就先引入d3,直接使用即可,没必要将d3在套一层,也不方便以后的升级

<script src="lib/d3.js"></script>
<script src="lib/angular.js"></script>

直接使用

angular.module('myApp.directive', [])
        .constant('d3',d3)
        .directive('d3Bars', function (d3) {
            return {}
        });

angular.module('myApp', ['myApp.directive'])
        .controller(function () {

        });

如果可以的话,建议你最好将画图的逻辑同你的业务分离,另抽出一个模块,例如

angular.module('ngD3', [])
        .constant('d3',d3)
        .directive('d3Bars', function (d3) {
            return {}
        });

说不定你以后就贡献了一个牛逼的图库了

尘曦 2022-09-09 15:24:36

如果你想使用现有的轮子的话,推荐你看看这个angular-nvd3。还有示例
如果你想自己尝试使用的话推荐你看看这个Creating Charting Directives Using AngularJS and D3.js(可能需要翻墙...)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文