AngularJS-инъекция зависимостей в сервисах, фабриках, фильтрах и т. д
поэтому у меня есть некоторые плагины и библиотеки, которые я хочу использовать в своем угловом приложении, и (в настоящее время) я просто ссылаюсь на эти функции/методы, поскольку они были предназначены в 99% приложений таким образом, что полностью игнорирует инъекцию зависимостей.
У меня есть (например) библиотека javascript "MomentJS", которая занимается форматированием и проверкой дат, и я использую ее во всем своем приложении в контроллерах, службах и фильтрах. Способ, который я узнал (используя AngularJS), заключается в создании сервис, который ссылается на функцию (и это методы) и вводит эту службу в мои контроллеры, что отлично работает.
проблема в том, что мне действительно нужно ссылаться на эту библиотеку во всех различных видах компонентов от сервисов до фильтров до контроллеров и всего остального. Итак, я предполагаю, что мой вопрос заключается в том, как вы делаете инъекцию зависимостей в фильтры, службы и все остальное, что не является контроллером?
это возможно? Это даже полезно?
любая помощь будет высоко оценили :)
3 ответа:
Да, вы можете использовать внедрение зависимостей для фильтров и директивы
Ex:
::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() { ... } }]);
в то время как уже существующие ответы верны и работают, john papas angular style guide выступает за использование
$inject
службы в Y091:фильтр:
app.filter('<filter', MyFilter); MyFilter.$inject = ['$http']; function MyFilter() { return function(data) { } }