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