26

在:

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

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

或者他们是否依赖于良好的旧论据顺序来传递给他们的内容?

4

2 回答 2

44

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

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

他们是

  1. 元素范围
  2. 元素本身(jquery/mini jquery 包装)
  3. 元素的属性集
  4. 使用的任何控制器required
于 2013-04-08T04:18:35.337 回答
22

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

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

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

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

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

编辑:有关注入服务的演示,请参见此处。当返回一个指令(例如)对象而不是函数$timeout时,您可以做同样的事情。return {restrict: 'E', link: function() {...}}

于 2013-05-10T01:24:28.350 回答