क्या एक सेवा को दूसरी सेवा में कोणीयजेएस में इंजेक्ट करना संभव है?
क्या एक सेवा को दूसरी सेवा में कोणीयजेएस में इंजेक्ट करना संभव है?
जवाबों:
हाँ। कोणीयज में नियमित इंजेक्शन नियम का पालन करें।
app.service('service1', function(){});
//Inject service1 into service2
app.service('service2',function(service1){});
@Simon का शुक्रिया। माइनिंग की समस्या से बचने के लिए ऐरे इंजेक्शन का उपयोग करना बेहतर होता है।
app.service('service2',['service1', function(service1) {}]);
ngmin
ग्रंट कार्य का उपयोग या संबद्ध भी कर सकते हैं ।
हाँ। इस तरह (यह एक प्रदाता है, लेकिन यही बात लागू होती है)
module.provider('SomeService', function () {
this.$get = ['$q','$db','$rootScope', '$timeout',
function($q,$db,$rootScope, $timeout) {
return reval;
}
});
इस उदाहरण $db
में, ऐप में कहीं और घोषित की गई सेवा है और प्रदाता के $get
फ़ंक्शन में इंजेक्ट की जाती है।
किसी भी भ्रम से बचने के लिए, मुझे लगता है कि यह भी ध्यान देने योग्य है कि यदि आप अपने चाइल्ड सर्विस में किसी अन्य सेवाओं (जैसे $ http, $ कुकीज़, $ राज्य) का उपयोग कर रहे हैं, तो आपको उन्हें स्पष्ट रूप से घोषित करने की भी आवश्यकता है।
जैसे
function() {
var childService = function($http, $cookies, parentService) {
// Methods inherited
this.method1Inherited = parentService.method1();
this.method2Inherited = parentService.method2();
// You can always add more functionality to your child service
angular.module("app").service("childService", ["$http", "$cookies", "parentService", childService]);
}());
आप या तो अपने बच्चे के अंदर उपयोग की जा रही सेवाओं को एक ऐरे में घोषित कर सकते हैं और फिर वे स्वचालित रूप से इंजेक्ट हो जाते हैं, या उन्हें $ इंजेक्शन एनोटेशन के साथ अलग से इंजेक्ट कर सकते हैं:
childService.$inject = ["$http", "$cookies", "parentService"];
angular.module("app").service("childService ", childService );
['service1', function(service1) {}]