我需要使用$q
我的指令的link
函数。我需要它来包装由一个参数重新调整的可能的promise(参见下面的例子)。但是,我不知道如何将$q
依赖项传递给此函数。
angular.module('directives')
.directive('myDirective', function() {
return {
scope: {
onEvent: '&'
}
// ...
link: function($scope, $element) {
$scope.handleEvent() {
$q.when($scope.onEvent()) {
...
}
}
}
}
}
答案 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) {
...
}]);