如何将$ q传递给angular指令链接函数?

时间:2014-10-28 10:49:01

标签: javascript angularjs angularjs-directive angular-promise

我需要使用$q我的指令的link函数。我需要它来包装由一个参数重新调整的可能的promise(参见下面的例子)。但是,我不知道如何将$q依赖项传递给此函数。

angular.module('directives')
 .directive('myDirective', function() {
   return {
     scope: {
       onEvent: '&'
     }
     // ...
     link: function($scope, $element) {
       $scope.handleEvent() {
         $q.when($scope.onEvent()) {
            ...
         }
       }
     }
  }
}

3 个答案:

答案 0 :(得分:13)

只需将其添加为您的指令的依赖项,$ q将在链接函数中使用。这是因为JavaScript的closures

以下是基于您的代码的示例。

angular.module('directives')
.directive('myDirective', ['$q', function($q) {
   return {
     scope: {
       onEvent: '&'
     }
     // ...
     link: function($scope, $element) {
       $scope.handleEvent() {
         $q.when($scope.onEvent()) {
           ...
         }
       }
     }
  }
}])

答案 1 :(得分:2)

你不能直接注入链接函数,但你可以注入指令的工厂函数:

angular.module('directives')
 .directive('myDirective', function($q) {
   ...

如果使用缩小器,则使用数组语法进行注入。

答案 2 :(得分:2)

var module = angular.module('directives');
module.directive('myDirective', ['$q', function($q) {
 ...
}]);