我在指令和服务之间有一些共同的功能。我真的不想在这两项之间复制代码。是否可以将服务注入指令?
问问题
493 次
2 回答
2
是的。在您的指令中只需执行以下操作:
.directive('directiveName', ['ServiceName', function(ServiceName) {
return {
link: function(...) {
ServiceName.doSomething();
}
}
}]);
于 2013-06-08T20:16:57.390 回答
1
是的,这就像服务的主要用途之一。您可以注入指令声明的外部函数:
myModule.directive('myDirective', function(awesomeService) {
return {
link: function(scope, element, attrs) {
awesomeService.doSomethingAwesome();
}
};
});
或者,如果您的指令使用控制器,只需将其注入那里:
var myDirectiveCtrl = function(awesomeService) {
awesomeService.doSomethingAwesome();
};
myModule.directive('myDirective', function() {
return {
controller: myDirectiveCtrl,
require: 'myDirectiveCtrl',
link: function(scope, element, attrs, ctrl) {
ctrl.doStuffMaybe();
}
};
});
于 2013-06-08T20:27:54.223 回答