我正在使用以下语法将父控制器注入自定义指令的链接函数中,我也想注入一个常量。
angular.module('myModule')
.constant('myDefaults', {
key: value
})
.directive('myDirective', function () {
return {
require:'^myParentDirective',
restrict: 'EA',
scope: {},
link: function ($scope, $element, $attrs, myParentDirectiveCtrl, myDefaults) {
... link funciton code ...
}
}
}
不幸的是,myDefaults没有定义,如果我用myParentDirectiveCtrl交换顺序,那么这是未定义的。
我认为顺序并不重要,但可能是因为我认为你可以在注入它时调用父控制器,它不需要被调用与实际父指令相同的名称控制器。那么,它必须是链接函数的第4个参数吗?为什么它忽略了之后注入的任何东西?
感谢。
答案 0 :(得分:3)
如果你想要注入任何服务,工厂或控制器应该是指令而不是链接。将你的依赖注入指令,然后它们工作正常 尝试使用如下:
angular.module('myModule')
.constant('myDefaults', {
key: value
})
.directive('myDirective', ['myParentDirectiveCtrl', 'myDefaults', function (myParentDirectiveCtrl, myDefaults) {
return {
require: '^myParentDirective',
restrict: 'EA',
scope: {},
link: function ($scope, $element, $attrs) {
// here now we can use the services injected to the directive.
//...link funciton code...
}
};
}]);