2013-08-26 6 views
6

मैं एक मॉड्यूल बनाकर विभिन्न मॉड्यूल के बीच कुछ डेटा साझा करना चाहता हूं, उदाहरण के लिए dataService कहा जाता है, इसमें एक चर डालें, और फिर इस मॉड्यूल को अन्य मॉड्यूल में निर्भरता के रूप में डालें ।requjs में विभिन्न मॉड्यूल के बीच डेटा साझा करने के लिए, जावास्क्रिप्ट

define('dataService', function() { 
    var quotes = []; 
    return { 
    quotesArray: quotes, 
     }; 
}); 

require(['dataService'], function (dataService) { 
    dataService.quotesArray {1, 2, 3}; // setting the quotes variable 
}); 

define('otherModule', ['dataService'], function (dataService) { 
    var x = dataService.quotesArray; // x = empty Array, why? 
}); 

यहाँ वैकल्पिक हल है::

define('dataService', function() { 
    var quotes = []; 
    var getQuotes = function() {  
     return quotes; 
    }; 
    var setQuotes = function (newQuotes) { 
     quotes = newQuotes; 
    }; 
    return { 
     getQuotes: getQuotes, 
    }; 
}); 

require(['dataService'], function (dataService) { 
    var x = dataService.getQuotes(); // now I can get/set the quotes variable 
    dataService.setQuotes(); 
}); 

मैं सिर्फ अगर यह कुछ डेटा अलग में सुलभ हो बनाने के लिए एक उचित तरीका है सोच रहा हूँ यहाँ कोड (वह काम नहीं करता है) मॉड्यूल?

और पहला विकल्प क्यों काम नहीं करता है?

+0

[का उपयोग RequireJS के संभावित डुप्लिकेट, मैं ग्लोबल ऑब्जेक्ट्स या सिंगलेट्स में कैसे पास करूं?] (http://stackoverflow.com/questions/5608685/using-requirejs-how-do-i-pass-in-global-objects-or-singletons-around) – explunit

+0

पहला टुकड़ा अपेक्षित काम करता है, क्योंकि यह पहेली दिखाता है, http://jsbin.com/ifeyefo/1/। आपके सेटअप में कुछ गड़बड़ होनी चाहिए। क्या यह वास्तव में आपके द्वारा उपयोग किया जाने वाला कोड है, या एक सरल उदाहरण है। –

+0

@ एंड्रियास कोबरले, क्षमा करें, पहेली को नहीं खोल सकते हैं। यह लगभग कोड है जिसका मैं उपयोग कर रहा हूं। –

उत्तर

6

यह काम आप दोनों का एक उदाहरण बनाने की जरूरत बनाने के लिए, ताकि एक दूसरे के गुणों को अधिलेखित करता है:

define('Quotes', function (Module) { 
    return { 
     quotesArray: ['a', 'b', 'c'] 
    }; 
}); 

define('Service', ['Quotes'], function (quotes) { 
    console.log(1, quotes.quotesArray); // ["a", "b", "c"] 
    quotes.quotesArray = [1, 2, 3]; 
}); 

require(['Service', 'Quotes'], function(service, quotes) { 
    console.log(2, quotes.quotesArray); // [1, 2, 3] 
}); 

यहाँ एक काम बेला है: http://jsfiddle.net/kmturley/aHgMJ/

+0

क्या निर्भरता किसी ऑर्डर के बिना async लोड करती है लेकिन ऑर्डर में निष्पादित - सेवा - उद्धरण? – kitimenpolku

+0

आदेश होगा: उद्धरण मॉड्यूल परिभाषित किया गया है, सेवा मॉड्यूल परिभाषित किया गया है, सेवा मॉड्यूल उद्धरण मॉड्यूल लोड करता है और मूल्यों को ओवरराइट करता है, सेविस और उद्धरण मॉड्यूल लोड होते हैं और मान लॉग आउट होते हैं –

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