2014-10-20 8 views
5

मैं एक AngularJS मॉड्यूल बना रहा हूं। बात यह है कि, यह मॉड्यूल अन्य मॉड्यूल (इसकी प्लगइन की तरह) के साथ काम करने का अनुमान है। तो मैं बाद में इस मॉड्यूल को दूसरे मॉड्यूल से आयात करूंगा। हालांकि, इस मॉड्यूल में कुछ सेवा है जो मैं इस मॉड्यूल को आयात करने वाले मॉड्यूल से बाद में ओवरराइड करना चाहता हूं। मैं ऐसा कैसे करूं? क्या एक ही नाम के साथ बस एक और सेवा को परिभाषित करना होगा? यदि हां, तो मुझे मूल सेवा कैसे प्राप्त होगी?अधिभावी AngularJS सेवा

+3

आप की जाँच की है [ '$ provide.decorator'] (https://docs.angularjs.org/api/auto/सेवा/$ # डेकोरेटर प्रदान)? – Yoshi

+0

आह! इससे चल जाएगा। धन्यवाद! – asdacap

उत्तर

3

ओवरराइड मॉड्यूल की इन्स्टेन्शियशन के आदेश के आधार पर हो जाएगा। पिछले मॉड्यूल बनाया यह पहले बनाए गए डुप्लिकेट सेवाओं के साथ मॉड्यूल पर पूर्वता होगा।

अतः सेवाओं के लिंक के बारे में नेमस्पेसिंग: "Namespacing" services in AngularJS

Plunker: http://plnkr.co/edit/P488AkNtGYGUXmo9gIAT?p=preview

var dep1 = angular.module("dep1",[]); 
    var dep2 = angular.module("dep2",[]); 
    var app = angular.module("app",["dep2","dep1"]); 

    dep1.factory("helloSrvc",function(){ 
    return { 
     msg: "hello from dep1" 
    } 
    }); 

    dep2.factory("helloSrvc",function(){ 
    return { 
     msg: "hello from dep2" 
    } 
    }); 

    app.controller("myCtrl", function(helloSrvc,$scope){ 
    $scope.msg = helloSrvc.msg; 
    }); 

    angular.bootstrap(document,["app"]); 
संबंधित मुद्दे