2013-07-25 8 views
26

माना जाता है कि मेरे पास AngularJS के लिए दो मॉड्यूल हैं, उदा। foo और bar, और दोनों baz नामक एक सेवा को परिभाषित करते हैं।विभिन्न मॉड्यूल से एक ही नाम के साथ दो AngularJS सेवाओं का उपयोग कैसे करें?

अपने आवेदन में मैं कह कर उन पर निर्भर:

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

तब मैं मैं कैसे परिभाषित कर सकते हैं

app.controller('blaController', [ '$scope', 'baz', function($scope, baz) { 
    // ... 
}]); 

का उपयोग करके एक नियंत्रक में baz सेवा का उपयोग करने की कोशिश कर सकते दोनों में से कौन सेवाओं का उपयोग करना चाहते हैं? क्या कोई पूर्ण-योग्य नाम जैसे कुछ है?

+2

संभावित डुप्लिकेट [विभिन्न मॉड्यूल से समान नाम वाले मानों का संदर्भ कैसे लें] (http://stackoverflow.com/questions/15342657/how-to-reference-values-with-the-same-name-from- अलग-अलग मॉड्यूल) – Stewie

+0

एंगुलरजेएस में ["नेमस्पेसिंग" सेवाओं के संभावित डुप्लिकेट] (http://stackoverflow.com/questions/14909474/namespacing-services-in-angularjs) –

+0

[मॉड्यूलर और एंगुलरज में नाम संघर्ष] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/13406791/modules-and-name-clashes-in-angularjs) – shannon

उत्तर

37

सेवा लोकेटर नाम (angularjs guide DI) द्वारा सेवाओं को देखता है। हालांकि "Namespacing" services in AngularJS:

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

मुझे लगता है कि आप "हाथ से" पूरी तरह से योग्य नाम बना सकते हैं: सेवा foo.baz और सादे baz के बजाय bar.baz नाम। यह एक आत्म भ्रम की तरह है। इसके अलावा, इसे इस तरह लिखना वास्तविक नाम नहीं बना रहा है, लेकिन कोड पढ़ने वाले दूसरे व्यक्ति को ऐसा लगता है।

+1

मैं यह उल्लेख करना भूल गया कि आप इसे बंद करने के साथ कम कर सकते हैं '(फ़ंक्शन() {मॉड्यूल घोषणा}());' –

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