2013-02-21 30 views
5

आइए कहें कि मेरे पास एक नियंत्रक है, जो दो मॉड्यूल पर निर्भर करता है जिसमें दोनों एक ही नाम के साथ निर्देश या सेवा रखते हैं। क्या मैं निर्दिष्ट कर सकता हूं कि वास्तव में किस का उपयोग किया जाना चाहिए?AngularJS में इंजेक्शन मॉड्यूल के नामस्थानों के बीच अंतर कैसे करें?

angular.module('myApp', ['secondModule', 'thirdModule']) 
    .controller('Ctrl1', ['$scope', 'myService', function(scope, myService){ 
     scope.user = myService.getUser(); 
     console.log(myService); 
}]); 

इस मामले दोनों secondModule और thirdModule में एक सेवा MyService कहा जाता है। लेकिन इस उदाहरण में केवल तृतीय मॉड्यूल का उपयोग किया जाएगा। मैंने secondModule.myService जैसे Ctrl1 पर निर्भरता के रूप में कुछ डालने का प्रयास किया, लेकिन यह काम नहीं करेगा। क्या AngularJS में कुछ प्रकार का नामस्थान है?

+0

आपको वास्तव में इससे बचना चाहिए !! फिलहाल यह संभव नहीं लग रहा है –

+2

यह एक वास्तविक समस्या की तरह लगता है जब बड़े पैमाने पर ऐप्स विकसित करना जिनमें कई निर्देश/सेवाएं/स्थिरांक आदि हो सकते हैं। सरल नामकरण सम्मेलनों का उपयोग करना पर्याप्त मजबूत तंत्र इमो नहीं है। –

उत्तर

2

फिलहाल, कोई मॉड्यूल आधारित नेमस्पेसिंग नहीं है। आपको अपने आप टकराव से बचना होगा।

मुझे विश्वास है कि इसके बारे में कुछ चर्चा हुई थी, लेकिन मुझे इस समय यह नहीं मिल रहा है।

0

कैसे सेवाओं (और भी नियंत्रक) नेमस्पेसिंग के बारे में?

angular.module('secondModule', []) 
    .factory('secondModule.myService', function($http) { 
     return { 
      getUser: function() { /* some code here */ } 
     }; 
    }); 

angular.module('thirdModule', []) 
    .factory('thirdModule.myService', function($http) { 
     return { 
      getGroup: function() { /* some code here */ } 
     }; 
    }); 

angular.module('myApp', ['secondModule', 'thirdModule']) 
    .controller('myApp.Ctrl1', 
     ['$scope', 'secondModule.myService', function(scope, myService){ 
      scope.user = myService.getUser(); 
      console.log(myService); 
     }] 
    );