También puede usar el servicio $ inject para obtener el servicio que desee. Me resulta útil si no conozco el nombre del servicio con anticipación pero conozco la interfaz del servicio. Por ejemplo, una directiva que conectará una tabla en un punto final ngResource o un botón genérico de borrar registro que interactúa con cualquier punto final de la API. No desea volver a implementar la directiva de tabla para cada controlador o fuente de datos.
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)
ahora su servicio 'anónimo' está completamente disponible. Si es ngResource, por ejemplo, puede usar la interfaz estándar ngResource para obtener sus datos
Por ejemplo:
scope.apiService.query((response) ->
scope.data = response
, (errorResponse) ->
console.log "ERROR fetching data for service: #{attributes.apiService}"
console.log errorResponse.data
)
He encontrado que esta técnica es muy útil al hacer elementos que interactúan especialmente con puntos finales API.