服务,工厂,过滤器等的依赖注入
所以我有一些插件和库我想用在我的角度应用程序和(目前)我只是简单地引用这些函数/方法,因为它们是在99%的应用程序中打算完全忽略依赖注入的方式。
我有(例如)处理格式化和验证日期的JavaScript库“MomentJS”,并且我在控制器,服务和过滤器中通过我的应用程序使用它。 我学习的方式(使用AngularJS)是创建一个引用该函数(及其方法)的服务,并将该服务注入到我的控制器中,这非常有效。
问题是,我真的需要从服务,过滤器到控制器等所有不同类型的组件中引用这个库。 所以,我想我的问题是你如何在过滤器,服务和其他不是控制器的其他东西中进行依赖注入?
这可能吗? 这甚至是有益的吗?
任何帮助将不胜感激 :)
是的,你可以使用依赖注入的过滤器和指令
例如:
过滤:
app.filter('<filter>', ['$http', function(http){
    return function(data){
    }
}]);
指示:
app.directive('<directive>', ['$http', function(http){
    return {
        ....
    }
}]);
服务:
app.factory('<service>', ['$http', function(http) {
  var shinyNewServiceInstance;
  return shinyNewServiceInstance;
}]);
为了完整起见,以下是注入的服务示例:
app.service('<service>', ['$http', function($http) {
  this.foo = function() { ... }
}]);
  虽然现有的答案是正确的,并且工作正常,但约翰·帕帕斯角式指导书赞成在Y091中使用$inject服务: 
过滤:
app.filter('<filter', MyFilter);
MyFilter.$inject = ['$http'];
function MyFilter() {
  return function(data) {
  }
}
指示:
app.directive('<directive>', MyDirective);
MyDirective.$inject = ['$http'];
function MyDirective() {
  return {
    ...
  }
}
厂:
app.factory('<factory>', MyFactory);
MyFactory.$inject = ['$http'];
function MyFactory() {
  var shinyNewServiceInstance;
  return shinyNewServiceInstance;
}
服务:
app.service('<service>', MyService);
MyService.$inject = ['$http'];
function MyService() {
  this.foo = foo;
  function foo(){
    ...
  }
}
上一篇: Dependency injection in services, factories, filters etc
