我正在尝试使用这个插件https://github.com/jtblin/angular-chart.js。但是我遇到了这个错误(我认为问题不在插件上,而是在注入方式上!):
当我像下面这样全局注入
然而,如果我从注入行中删除
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) {
,当然由于.
的原因,这会导致错误。
ChartJsProvider
。在此处查看示例。还请注意,所有配置似乎都是在app.config
中完成,而不是在控制器中完成。 - Rhumborl