2013-07-16 6 views
25

मैं घटनाओं को ट्रैक करने के लिए एक कस्टम फ़िल्टर बनाने की कोशिश कर रहा हूं। तो फिल्टर सेगमेंटियो सेवा पर विधियों को कॉल कर सकता है।angular.js में कस्टम फ़िल्टर के लिए निर्भरता के रूप में सेवा कैसे इंजेक्ट करें?

angular.module('sageApp') 
    .filter('trackEvent', function(segmentio) { 
    return function(entry, category) { 
    segmentio.track(entry, category); 
    } 
}); 

लेकिन सेगमेंटियो सेवा उपलब्ध नहीं है। फ़िल्टर वाउल में सेवा इंजेक्ट करने के तरीके पर निर्भरता के बारे में कोई भी विचार बहुत सराहना की जाएगी।

+1

एफवाईआई, उपर्युक्त कोड काम करता है। –

उत्तर

41

प्रयास करें:

app.filter('sageApp', ['segmentio', function(segmentio) { 
    return function(entry, category) { 
     segmentio.track(entry, category); 
    } 
}]); 
+2

अब आप _sageApp_ के लिए एक परीक्षण कैसे लिखेंगे जो एक mock _segmentio_ – shantanusinghal

+0

इंजेक्ट करता है बस जांचें कि आप सेगमेंटियो मॉक सेवा पर उचित विधि कहां जा रही है या नहीं। –

+1

@Satheesh कुमार आप फ़िल्टर की निर्भरताओं का नकल कैसे करते हैं? फ़िल्टर को तत्काल करने पर मुझे मोज़े में नहीं लग रहा है ('$ फ़िल्टर ('name') 'अन्य तर्क स्वीकार नहीं करता है)। – JimmyBoh

3

सेवा परीक्षण किया है और काम करता है है। Acutally मुझे एंजुलर का उपयोग करते समय, मेरी समस्या का पता चला, कभी-कभी क्रोम देव उपकरण बंद करने में वेरिएबल्स प्रदर्शित नहीं करते हैं जब आप निरीक्षण में डीबगर डालते हैं। जब मैंने console.log (सेगमेंटियो) किया तो यह ठीक काम करता था।

+0

हर समय मेरे साथ होता है। आप किसी भी कार्यक्षेत्र में उपयोग नहीं किए जाने वाले कुछ भी नहीं देख सकते हैं, भले ही आप सहजतापूर्वक मान लें कि आप इस कार्य में 'रिटर्न फ़ंक्शन (...' के अंदर एक चर का निरीक्षण कर सकते हैं। लेकिन एक बार जब आप डमी कोड लिखते हैं 'var temp = segmentio', आपके पास निरीक्षण करने के लिए कुछ होगा। –

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

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