Angularjs 如何在服务和指令之间共享功能

Angularjs 如何在服务和指令之间共享功能,angularjs,Angularjs,我在指令和服务之间有一些共同的功能。我真的不想在这两个项目之间复制代码。是否可以将服务注入指令?是。在您的指令中,只需执行以下操作: .directive('directiveName', ['ServiceName', function(ServiceName) { return { link: function(...) { ServiceName.doSomething(); } } }]); 是的,这是服务的主要目的之一。您可以向指令声明的外部函数注

我在指令和服务之间有一些共同的功能。我真的不想在这两个项目之间复制代码。是否可以将服务注入指令?

是。在您的指令中,只需执行以下操作:

.directive('directiveName', ['ServiceName', function(ServiceName) {
  return {
    link: function(...) {
      ServiceName.doSomething();
    }
  }
}]);

是的,这是服务的主要目的之一。您可以向指令声明的外部函数注入:

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();
    }
  };
});

关于可以注入什么的好帖子: