我正在尝试使用此插件https://github.com/jtblin/angular-chart.js。 而且我收到了这个错误(我认为问题不在于插件而是在我正在进行注射的方式!!):
curl
当我像下面那样全局注入Error: [$injector:unpr] Unknown provider: chart.jsProvider <- chart.js <- WhateverCtrl
http://errors.angularjs.org/1.3.20/$injector/unpr?p0=chart.jsProvider%20%3C-hart.js%20%3C-%20WhateverCtrl
at http://mega.app/scripts/vendor.js:9895:12
at http://mega.app/scripts/vendor.js:13863:19
at Object.getService [as get] (http://mega.app/scripts/vendor.js:14010:39)
at http://mega.app/scripts/vendor.js:13868:45
at getService (http://mega.app/scripts/vendor.js:14010:39)
at invoke (http://mega.app/scripts/vendor.js:14042:13)
at Object.instantiate (http://mega.app/scripts/vendor.js:14059:27)
at http://mega.app/scripts/vendor.js:18356:28
at http://mega.app/scripts/vendor.js:44696:28
at invokeLinkFn (http://mega.app/scripts/vendor.js:18113:9)
时,我没有收到任何错误。 (继续阅读)
chart.js
但根据我的理解,建议只在使用它的控制器中注入此模块,因此当我尝试将其注入下面的控制器时,我得到上面的错误。
angular.module('my-app', [
'chart.js' // <<<<<
'ui.router',
'ngStorage',
// ...
]);
})();
但是,如果我从注入行删除angular
.module('my-app')
.controller('WhateverCtrl', ctrl);
ctrl.$inject = ['chart.js']; // <<<<<
function ctrl() {
var vm = this;
// ...
到$
我确实摆脱了错误,但是ctrl.inject = ['chart.js'];
不会工作,因为我想我必须把它传递给函数chart.js
就像function ctrl() {
function ctrl(chart.js) {
因.
而导致错误。
答案 0 :(得分:5)
由于angular-chart.js
本身就是一个模块,因此必须将其注入模块并且不能注入控制器。
答案 1 :(得分:0)
通过JGOakley的澄清,我能够在angular-chart.js
return angular.module('chart.js', [])
.provider('ChartJs', ChartJsProvider)
要包含它以便在您的控制器中使用:
YourModule.$inject = ['ChartJs'];
这是一个令人沮丧的发现,因为我把这一行用来表示我可以将其引用为chart
define(['angular', 'chart'], factory);