İstediğiniz hizmeti almak için $ inject hizmetini de kullanabilirsiniz. Servis adını önceden bilmiyor, ancak servis arayüzünü biliyorsanız yararlı buluyorum. Örneğin, bir tabloyu bir ngResource bitiş noktasına bağlayacak bir yönerge veya herhangi bir api bitiş noktasıyla etkileşime giren genel bir silme-kayıt düğmesi. Her denetleyici veya veri kaynağı için tablo yönergesini yeniden uygulamak istemezsiniz.
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)
Artık 'anonim' hizmetiniz tamamen kullanılabilir durumda. Örneğin ngResource ise, verilerinizi almak için standart ngResource arabirimini kullanabilirsiniz
Örneğin:
scope.apiService.query((response) ->
scope.data = response
, (errorResponse) ->
console.log "ERROR fetching data for service: #{attributes.apiService}"
console.log errorResponse.data
)
Özellikle API uç noktalarıyla etkileşime giren öğeler yaparken bu tekniğin çok yararlı olduğunu gördüm.