angularjs - मैं कंसोल से एंगुलरजेएस सेवा का परीक्षण कैसे कर सकता हूं?




angularjs-service (3)

@ जस्टगोस्चा का जवाब स्पॉट पर है, लेकिन जब मैं एक्सेस चाहता हूं तो यह टाइप करने के लिए बहुत कुछ है, इसलिए मैंने इसे अपने ऐप के नीचे जोड़ा। जे। तो मुझे http सेवा प्राप्त करने के लिए x = getSrv('$http') टाइप करना होगा।

// @if DEBUG
function getSrv(name, element) {
    element = element || '*[ng-app]';
    return angular.element(element).injector().get(name);
}
// @endif

यह इसे वैश्विक दायरे में जोड़ता है लेकिन केवल डीबग मोड में। मैंने इसे @if DEBUG अंदर रखा ताकि मैं उत्पादन कोड में इसके साथ समाप्त न हो। मैं गर्वक्शन निर्माण से डीबग कोड को हटाने के लिए इस विधि का उपयोग करता हूं।

मेरे पास एक सेवा है:

angular.module('app').factory('ExampleService', function(){
  this.f1 = function(world){
    return 'Hello '+world;
  }
  return this;
})

मैं इसे जावास्क्रिप्ट कंसोल से जांचना चाहता हूं और सेवा के फ़ंक्शन f1() को कॉल करना चाहता हूं।

मैं उसे कैसे कर सकता हूँ?


Angularjs निर्भरता इंजेक्शन ढांचे आपके नियंत्रकों को आपके ऐप मॉड्यूल की निर्भरता इंजेक्शन के लिए ज़िम्मेदार है। यह अपने इंजेक्टर के माध्यम से संभव है।

आपको पहले एनजी-ऐप की पहचान करने और संबंधित इंजेक्टर प्राप्त करने की आवश्यकता है। नीचे दी गई क्वेरी डीओएम में अपना एनजी-ऐप ढूंढने और इंजेक्टर को पुनः प्राप्त करने के लिए काम करती है।

angular.element('*[ng-app]').injector()

क्रोम में, हालांकि, आप नीचे दिखाए गए अनुसार एनजी-ऐप को लक्षित कर सकते हैं। और $0 हैक का उपयोग करें और angular.element($0).injector()

एक बार इंजेक्टर होने के बाद, नीचे निर्भरता इंजेक्शन वाली सेवा प्राप्त करें

injector = angular.element($0).injector();
injector.get('$mdToast');


सबसे पहले, आपकी सेवा का एक संशोधित संस्करण।

ए )

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

app.factory('ExampleService',function(){
    return {
        f1 : function(world){
            return 'Hello' + world;
        }
    };
});

यह एक वस्तु देता है, यहां कुछ नया नहीं है।

अब कंसोल से इसे पाने का तरीका है

बी)

var $inj = angular.injector(['app']);
var serv = $inj.get('ExampleService');
serv.f1("World");

सी )

उन चीजों में से एक जो आप पहले कर रहे थे, यह मानना ​​था कि ऐप। फैक्ट्री आपको फ़ंक्शन स्वयं या एक नया संस्करण देता है। जो मामला नहीं है। एक कन्स्ट्रक्टर प्राप्त करने के लिए आपको या तो करना होगा

app.factory('ExampleService',function(){
        return function(){
            this.f1 = function(world){
                return 'Hello' + world;
            }
        };
    });

यह एक उदाहरण सेवा कन्स्ट्रक्टर देता है जिसे आपको अगली बार 'नया' करना होगा।

या वैकल्पिक रूप से,

app.service('ExampleService',function(){
            this.f1 = function(world){
                return 'Hello' + world;
            };
    });

यह इंजेक्शन पर नया उदाहरण सेवा () देता है।





angularjs-service