2014-09-22 7 views
5

मैं डीबगिंग करते समय लॉग संदेश को कंसोल पर आउटपुट करना चाहता हूं। नियंत्रकों में ठीक काम करता है लेकिन इसे मॉड्यूल कॉन्फ़िगरेशन ब्लॉक में काम करने के लिए नहीं मिल सकता है, उदा।

error TypeError: Cannot read property 'debug' of undefined 

यह एक मॉड्यूल के config ब्लॉक में logProvider उपयोग करना संभव है:

angular.module('MyApp', []) 
    .run(function($state){ 
    // run stuff here 
    }); 
    .config(function($logProvider){ 
    $log.debug('Config debug message'); 
    }); 

मैं कोई त्रुटि मिलती है?

+0

'$ logProvider' नहीं है' $ log' सेवा। आप लॉग प्रदाता के साथ क्या करना चाहते हैं? प्रदाता कॉन्फ़िगरेशन चरण – PSL

उत्तर

15

$logProvider config चरण के दौरान पहुँचा, लॉग सेवा को कॉन्फ़िगर करने के लिए इस्तेमाल किया जाता है या आप $provide इंजेक्षन बदलने/decorators का उपयोग कर logservice के व्यवहार का लाभ उठाने कर सकते हैं। लॉग सेवा को आपके मॉड्यूल MyApp में अभी भी तत्काल नहीं किया गया है। इसके बजाय आप कोर ng से लॉगर इंस्टेंस प्राप्त कर सकते हैं और इसे डिबगिंग के लिए उपयोग कर सकते हैं।

आप कर सकता है: -

.config(function(){ 
    var $log = angular.injector(['ng']).get('$log') 
    $log.debug('Config debug message'); 
    }); 

$logProvider.$get आप logservice के लिए निर्माता दे देंगे, आप अपने आप को इसके बारे में एक उदाहरण बना सकते हैं $injector.instantiate($logProvider.$get) फोन करके लेकिन समस्या यह खिड़की सेवा है जो पर एक निर्भरता है कि है मधुमक्खी अभी तक तत्काल नहीं है, तो आखिरकार आपका लॉगर तत्काल विफल हो जाएगा।

एक और hacky तरह से, config ब्लॉक जो आपको किसी भी config प्रवेश से पहले पहली config ब्लॉक के रूप में सेट कर सकते हैं में एक डेकोरेटर जोड़कर लकड़हारा instantate के लिए आवश्यक है कोणीय मजबूर किया जाएगा कि तुम्हारे जाने के बाद निष्पादित कर सकते हैं ctor$logProvidergetter से और लॉगर का उदाहरण प्राप्त करें।

.config(function($provide){ 
    //Just a dummy decorator 
    $provide.decorator('$log', function($delegate){ 
     return $delegate; 
    }); 

}).config(function($logProvider){ 
    //get logger instance 
    var log = $logProvider.$get(); 
    log.debug("Got it"); 
}); 

Plnkr

+0

धन्यवाद @PSL के दौरान कॉन्फ़िगरेशन के लिए है - यह मेरी आवश्यकता के लिए अच्छा काम करता है। बस मेरे कॉन्फ़िगरेशन ब्लॉक के लिए कुछ डीबग संदेश सेट करने में सक्षम होने की आवश्यकता है। – onblur

+0

@onblur आपका स्वागत है। मैंने एक और तरीका जोड़ा है। मुझे यकीन नहीं है कि ऐसा करने का कोई और बेहतर तरीका है .. :( – PSL

+0

पहले कोड स्निपेट में, अर्ध-कोलन को .get ('$ log') के बाद क्यों छोड़ा गया था? – crowne

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

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