在自定义mean.io包中使用angular-chart.js作为依赖项
Using angular-chart.js as a dependency in a custom mean.io package
首先,我按照建议安装了angular-chart.js。
http://jtblin.github.io/angular-chart.js/
从我的自定义平均包的目录中,我键入:
$ bower install angular-chart.js --save
这在我的自定义模块的public/assets文件夹中创建了几个文件夹。
/packages/custom/report/public/assets/lib/angular-chart.js/...
and
/packages/custom/report/public/assets/lib/Chart.js/...
我遵循了learn.mean.io中关于如何将角度依赖项添加到自定义均值包的说明。
http://learn.mean.io/#mean-堆叠封装角度模块和依赖
在我模块的app.js:中
// Aggregate CSS assets
Report.aggregateAsset('css', 'report.css');
Report.aggregateAsset('css', '../lib/angular-chart.js/dist/angular-chart.css');
// Aggregate JS assets
Report.aggregateAsset('js','../lib/Chart.js/Chart.js');
Report.aggregateAsset('js','../lib/angular-chart.js/dist/angular-chart.js');
// Add dependency to modules in the custom package
Report.angularDependencies(['chart.js']);
理论上,这等于这样定义我的模块,包括依赖项:
angular.module('mean.report', ['chart.js']);
我也试过了。
当我运行应用程序时,我可以看到JS和CSS文件被下载,CSS样式可以使用,但我看不到任何图表。
在mean.io文件中尝试了许多不同的配置方式我已经能够看到饼图,但每次我试图用真实数据输入它时,我都会遇到一些错误,比如图表没有定义等。我在应用程序的视图中更改了一行,图表就消失了,这太疯狂了。我无法让它以一致的方式工作。
因此,要么chart.js没有被注入到我的模块中,要么angular-chart.js和chart.js之间的依赖关系没有得到解决。
我和一个来自mean.io支持团队的人讨论了很长时间,他说一切都很好,我可能应该检查angular-chart.js
听起来Chart.js没有被正确包含或无序。您是否尝试过将脚本直接包含到视图中,而不是通过aggregateAsset方法?
<script src="https://rawgit.com/nnnick/Chart.js/master/Chart.min.js"></script>
<script src="https://rawgit.com/jtblin/angular-chart.js/master/dist/angular-chart.min.js"></script>
我在这里很容易地完成了演示:http://jsfiddle.net/uc25erpc/.如果你在chart.js之前加载角度图,我会得到与你在没有定义chart时相同的错误。
另一方面,请查看https://github.com/zingchart/ZingChart-AngularJS用于替代AngularJS包装器。
我终于使用了另一个模块,即googlechart模块。
模块安装:
$ bower install angular-google-chart --save
在我模块的app.js:中
// Add CSS dependencies
// Module's CSS
Report.aggregateAsset('css', 'report.css');
// Add angular module dependencies
// Dependency to 'googlechart' module adding directives for Google Chart
// See https://github.com/bouil/angular-google-chart
Report.aggregateAsset('js', '../lib/angular-google-chart/ng-google-chart.js');
自定义模块控制器:
angular.module('mean.report', ['googlechart'])
.controller('ReportController', ['$scope', 'Global',
function($scope, Global) {
....
});
我找到了一个解决方案来避免出现错误消息"Chart is not defined"。
使用bower_components
而不是aggregateAsset
函数。在config/assets.json
文件中放入以下行,顺序与"js"部分相同:
"bower_components/Chart.js/Chart.min.js",
"bower_components/angular-chart.js/dist/angular-chart.min.js"
并在你的app.js:中定义所需的依赖项
Report.angularDependencies(['chart.js']);
- 是否可以在node.js依赖项上运行脚本
- 如何在引导程序中添加dropdown.js依赖项
- 通过异步加载自动列出require.js依赖项以进行r.js优化
- 避免使用同时具有css和js依赖关系的插件进行渲染阻塞
- 使用主干.js根据需要查看.js依赖关系
- 角度种子项目 - 角度加载器-js 依赖项
- 如何缓存一个Javascript类作为需求.js依赖
- 角度 JS 依赖表单字段验证
- 需要 JS 依赖项序列
- 需要 JS 依赖项覆盖以实现可配置的依赖项注入
- Ember.js依赖注入
- Angular JS-依赖下拉列表(3)
- 如何指定Kohana PHP部分视图CSS和JS依赖关系
- ReferenceError:BASE_URL未定义,Angular JS依赖项
- 如何管理Angular js依赖关系和模块化
- 全局函数中的Angular.js依赖项注入
- Node.js依赖的API请求调用使用async.waterfall,并将JSON响应与undercore.extend
- 是否可以在使用soma.js依赖项注入时进行模糊处理
- 如果JS在php-if语句中,我在哪里声明JS依赖项
- Angular JS依赖注入——最佳实践