Ви також можете скористатися послугою $ inject, щоб отримати будь-яку послугу, яка вам подобається. Я вважаю це корисним, якщо я не знаю назви служби достроково, але знаю інтерфейс сервісу. Наприклад, директива, яка підключить таблицю до кінцевої точки ngResource або загальної кнопки видалення-запису, яка взаємодіє з будь-якою кінцевою точкою api. Ви не хочете повторно реалізувати директиву таблиць для кожного контролера чи джерела даних.
template.html
<div my-directive api-service='ServiceName'></div>
my-directive.directive.coffee
angular.module 'my.module'
.factory 'myDirective', ($injector) ->
directive =
restrict: 'A'
link: (scope, element, attributes) ->
scope.apiService = $injector.get(attributes.apiService)
тепер ваша "анонімна" послуга повністю доступна. Якщо це, наприклад, ngResource, ви можете використовувати стандартний інтерфейс ngResource для отримання своїх даних
Наприклад:
scope.apiService.query((response) ->
scope.data = response
, (errorResponse) ->
console.log "ERROR fetching data for service: #{attributes.apiService}"
console.log errorResponse.data
)
Я вважав, що ця методика дуже корисна при створенні елементів, особливо взаємодіючих з кінцевими точками API.