Anda juga dapat menggunakan layanan $ inject untuk mendapatkan layanan apa pun yang Anda suka. Saya menemukan itu berguna jika saya tidak tahu nama layanan sebelumnya tetapi tahu antarmuka layanan. Misalnya arahan yang akan menyambungkan tabel ke titik akhir ngResource atau tombol hapus-rekam umum yang berinteraksi dengan titik akhir api apa pun. Anda tidak ingin menerapkan kembali arahan tabel untuk setiap pengontrol atau sumber data.
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)
sekarang layanan 'anonim' Anda sepenuhnya tersedia. Jika itu adalah ngResource misalnya, Anda dapat menggunakan antarmuka ngResource standar untuk mendapatkan data Anda
Sebagai contoh:
scope.apiService.query((response) ->
scope.data = response
, (errorResponse) ->
console.log "ERROR fetching data for service: #{attributes.apiService}"
console.log errorResponse.data
)
Saya telah menemukan teknik ini sangat berguna ketika membuat elemen yang berinteraksi dengan titik akhir API khususnya.