आप जो भी सेवा पसंद करते हैं उसे प्राप्त करने के लिए आप $ इंजेक्ट सेवा का भी उपयोग कर सकते हैं। मुझे वह उपयोगी लगता है अगर मुझे समय से पहले सेवा का नाम नहीं पता है लेकिन सेवा इंटरफ़ेस पता है। उदाहरण के लिए एक निर्देश जो एक एनकाउंटर एंड पॉइंट या जेनेरिक डिलीट-रिकॉर्ड बटन में एक टेबल को प्लग करेगा, जो किसी भी एपीआई एंड पॉइंट के साथ इंटरैक्ट करता है। आप प्रत्येक नियंत्रक या डेटा-स्रोत के लिए तालिका निर्देश को फिर से लागू नहीं करना चाहते हैं।
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
)
विशेष रूप से एपीआई एंडपॉइंट्स के साथ बातचीत करने वाले तत्वों को बनाते समय मैंने इस तकनीक को बहुत उपयोगी पाया है।