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

ejo*_*aud 26 javascript dependency-injection minify angularjs

在:

module.directive 'name', ->
  (scope, element, attr) ->
    # Whatever implemenation
Run Code Online (Sandbox Code Playgroud)

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

或者他们依靠好的旧论据来命令传递给他们的是什么?

Aru*_*hny 44

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

function link($scope, $element, attrs, ctrl) {
    //Your method
}
Run Code Online (Sandbox Code Playgroud)

他们是

  1. 元素的范围
  2. 元素本身(jquery/mini jquery包装)
  3. 元素的属性集
  4. 使用的任何控制器 required

  • 链接函数不需要缩小数组语法. (12认同)

z0r*_*z0r 22

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

module.directive('name', function($timeout) {
    return function(scope, element, attrs) {
        ...
    };
});
Run Code Online (Sandbox Code Playgroud)

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

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

请参阅文档中当前时间示例.

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