与父控制器一起注入常量到链接函数

时间:2015-04-29 17:32:35

标签: angularjs angularjs-directive

我正在使用以下语法将父控制器注入自定义指令的链接函数中,我也想注入一个常量。

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个参数吗?为什么它忽略了之后注入的任何东西?

感谢。

1 个答案:

答案 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...
    }
};
}]);