2014-04-16 5 views
6

से पहले प्रदाता को परिभाषित क्यों किया जाना चाहिए मेरे पास एक मॉड्यूल है। इसमें एक कॉन्फ़िगरेशन ब्लॉक, एक प्रदाता, और निरंतर परिभाषित किया गया है। कॉन्फ़िगर ब्लॉक निरंतर और प्रदाता दोनों का संदर्भ देता है। मैंने देखा है कि मेरे निरंतर ब्लॉक को मेरे कॉन्फ़िगर ब्लॉक से पहले या बाद में परिभाषित किया जा सकता है। हालांकि प्रदाता को कॉन्फ़िगर ब्लॉक से पहले परिभाषित किया जाना चाहिए या अन्यथा मुझे एक त्रुटि मिलती है।कॉन्फ़िगरेशन ब्लॉक

var myModule = angular.module('loadOrder', []); 

//if I define this after the config block, I get an error 
angular.module('loadOrder').provider('greetings',[ function(){ 
    this.$get = [function(){ 
     return { greet: function(){ return "Hola"; } }; 
    }]; 
}]); 

myModule.config(['$provide', 'greetingsProvider', 'planetName', function($provide, loadOrderProvider, planetName){ 
    $provide.value('someVals',[3,6,8]); 
    console.log("Lets go to", planetName); 
}]); 

myModule.constant('planetName', 'Saturn'); 

ऐसा क्यों है:

Error: [$injector:modulerr] Failed to instantiate module loadOrder due to: 
[$injector:unpr] Unknown provider: greetingsProvider 

यहां कुछ नमूना कोड है? मैं अपने कॉन्फ़िगरेशन ब्लॉक के बाद अपने प्रदाता को परिभाषित क्यों नहीं कर सकता?

उत्तर

0

जब आप provider पर कॉल करते हैं, config या constant कुछ भी तुरंत नहीं होता है। कॉल पंजीकृत हैं, एक कतार में डाल दिया गया है और आवेदन के प्रारंभ के दौरान चलाया जाता है।

constant के साथ मजाकिया बात यह है कि यह कतार के सामने रखा जाता है। इस प्रकार यह config से पहले उपलब्ध है, इससे कोई फर्क नहीं पड़ता।

+0

मैं अभी भी उलझन में हूं क्योंकि यदि मैं अपने रन ब्लॉक में किसी सेवा का संदर्भ देता हूं, तो रन ब्लॉक के बाद सेवा को परिभाषित किया गया है, तो यह कोई त्रुटि नहीं देता है। क्या आपको पता है कि परिभाषा आदेश सेवाओं/रन ब्लॉक के लिए क्यों मायने रखता है लेकिन यह प्रदाताओं/कॉन्फ़िगरेशन ब्लॉक के लिए महत्वपूर्ण है? – Selah

+0

@ सेलाह रन ब्लॉक को सबकुछ स्थापित करने के बाद बुलाया जाता है। – zeroflagL

+0

@zeroflagL क्या आप स्पष्ट कर सकते हैं कि प्रदाता को कॉन्फ़िगर ब्लॉक से पहले क्यों डिफिन किया गया है। अगर कुछ भी तुरंत नहीं होता है, तो कॉन्फ़िगरेशन ब्लॉक के बाद प्रदाता को परिभाषित किया गया है, तो क्यों कोई त्रुटि होगी, लेकिन अगर इसे पहले परिभाषित नहीं किया गया है? – dnc253

संबंधित मुद्दे