指令的链接功能的参数是否依赖于DI?

时间:2013-04-08 04:14:11

标签: javascript dependency-injection angularjs minify

在:

module.directive 'name', ->
  (scope, element, attr) ->
    # Whatever implemenation

链接函数的scopeelementattrs参数是否依赖于名称推断的依赖注入?如果是的话,我怎样才能使它们成为缩小证明?

或者他们是否依赖于旧的争论顺序来传递给他们什么?

2 个答案:

答案 0 :(得分:44)

不,链接功能有一组预定义的参数。

function link($scope, $element, attrs, ctrl) {
    //Your method
}

他们是

  1. 元素的范围
  2. 元素本身(jquery / mini jquery包裹)
  3. 元素的属性集
  4. required
  5. 中使用的所有控制器

答案 1 :(得分:22)

如果你想将DI与指令一起使用(正如我所做的那样),请将参数注入指令工厂函数而不是链接函数:

module.directive('name', function($timeout) {
    return function(scope, element, attrs) {
        ...
    };
});

要允许缩小,请将函数参数放在数组中,就像对控制器一样:

module.directive('name', ['$timeout', function($timeout) {
    return function(scope, element, attrs) {
        ...
    };
}]);

请参阅the docs中的当前时间示例。

编辑:See here以获取注入$timeout服务的演示。返回指令(例如return {restrict: 'E', link: function() {...}})对象而不是函数时,可以执行相同的操作。