आप जो भी सेवा चाहते हैं उसे पाने के लिए आप $ इंजेक्ट सेवा का भी उपयोग कर सकते हैं। मुझे यह उपयोगी लगता है अगर मैं समय से पहले सेवा नाम नहीं जानता लेकिन सेवा इंटरफेस को जानता हूं। उदाहरण के लिए एक निर्देश जो किसी तालिका को एनजीआरसोर्स एंड पॉइंट या एक जेनेरिक डिलीट-रिकॉर्ड बटन में प्लग करेगा जो किसी भी एपीआई एंड पॉइंट के साथ इंटरैक्ट करता है। आप प्रत्येक नियंत्रक या डेटा-स्रोत के लिए तालिका निर्देश को पुन: कार्यान्वित नहीं करना चाहते हैं।
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
)
मैं इस तकनीक पाया है जब तत्वों कि एपीआई अंतिमबिंदुओं विशेष रूप से के साथ बातचीत कर रही है बहुत उपयोगी हो करने के लिए ।
स्रोत
2016-08-26 08:25:26
मुझे लगता है कि यह एक बेहतर समाधान है क्योंकि यह आपके कोड को छोटा करने के बाद भी काम करता है। – czerasz
मुझे वापसी से पहले '_myData = myData' जोड़ना था {} और उसके बाद ऑब्जेक्ट को लिंक फ़ंक्शन के अंदर _myData के रूप में संदर्भित करना था। – Jelling
धन्यवाद @ जेलिंग। मुझे वही करना था। मुझे आश्चर्य है कि अगर कोई वहां से हमें बता सकता है कि क्यों ...? बंद होने के कारण – sfletche