这是我的控制器:
(function () {
'use strict';
angular
.module('app.dashboard', [ 'app.services.dashboardService', 'app.dashboard.eventTableDirective'])
.controller('DashboardController', DashboardController);
DashboardController.$inject = ['dashboardService', '$log', 'eventTableDirective'];
function DashboardController(dashboardService, $log) {
//.....
}
}());
和我的指示:
(function () {
'use strict';
angular
.module('app.dashboard.eventTableDirective', [])
.directive('eventTableDirective', eventTableDirective);
function eventTableDirective() {
var directive = {
link: link,
templateUrl: 'eventTable.directive.html',
restrict: 'EA'
};
return directive;
function link(scope, element, attrs) {
/* */
}
}
}());
虽然完全相同的逻辑与dashboardService一起使用,但它与eventTableDirective失败并导致这种错误:
错误:[$ injector:unpr]未知提供者:eventTableDirectiveProvider < - eventTableDirective< - DashboardController
答案 0 :(得分:1)
您可以通过在名称中添加后缀“Directive”来注入指令,因此在您的情况下,它有点不幸地被命名为eventTableDirectiveDirective
:
.controller("FooCtrl", function(eventTableDirectiveDirective){
})
但是,为什么?!您想要将指令注入控制器吗?也许我缺乏远见,但我无法想象需要这样做的场景。指令是显式的View元素 - 它们在DOM中存在(和死亡)。控制器不应对视图做任何假设,包括HTML,样式,指令等......
我建议你阅读“Thinking in AngularJS” if I have a jQuery background?以了解我所说的内容。事实上,我希望你能读到它,因为否则我会给你一把枪,你会用脚射击自己。