AngularJS – 服务,工厂,filter等的dependency injection

所以我有一些插件和库我想用在我的angular度的应用程序和(目前)我只是简单地引用这些函数/方法,因为他们打算在99%的应用程序的方式,完全忽略dependency injection。

我有(例如)处理格式和validationdate的JavaScript库“MomentJS”,我已经在我的应用程序在控制器,服务和filter中使用它。 我学习的方式(使用AngularJS)是创build一个引用函数(和它的方法)的服务,并将该服务注入到我的控制器中,这很好。

问题是,我真的需要从服务,filter到控制器等所有不同types的组件中引用这个库。 所以,我想我的问题是你怎么做在filter,服务和其他一切不是控制器的dependency injection?

这可能吗? 这甚至是有益的吗?

任何帮助将不胜感激 :)

是的,你可以使用dependency injectionfilter和指令

例如:

过滤:

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

虽然现有的答案是正确的,并且工作,约翰·帕帕斯angular风格指南赞成在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(){ ... } }