Você também pode usar o serviço $ injetar para obter o serviço que desejar. Acho isso útil se não souber o nome do serviço antes, mas conhecer a interface do serviço. Por exemplo, uma diretiva que irá conectar uma tabela a um ponto final ngResource ou a um botão de exclusão / registro genérico que interaja com qualquer ponto final api. Você não deseja reimplementar a diretiva de tabela para cada controlador ou fonte de dados.
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)
agora o seu serviço 'anônimo' está totalmente disponível. Se for ngResource, por exemplo, você poderá usar a interface ngResource padrão para obter seus dados
Por exemplo:
scope.apiService.query((response) ->
scope.data = response
, (errorResponse) ->
console.log "ERROR fetching data for service: #{attributes.apiService}"
console.log errorResponse.data
)
Eu descobri que essa técnica é muito útil ao criar elementos que interagem especialmente com os pontos de extremidade da API.