Chcę podzielić się niektórymi danymi między różnymi modułami, tworząc jeden moduł, wywoływany na przykład dataService
, wstawić do niego zmienną, a następnie wstawić ten moduł do innych modułów jako zależność . Oto kod (który nie działa):Jak udostępniać dane między różnymi modułami w requirejs, javascript
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?
});
tutaj jest obejście:
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();
});
Zastanawiam się tylko, czy jest to właściwy sposób, aby niektóre dane były dostępne w różnych moduły?
A dlaczego pierwsza opcja nie działa?
możliwe duplikat [Using RequireJS, w jaki sposób mogę przekazywać obiekty globalne lub singletony?] (http://stackoverflow.com/questions/5608685/using-requirejs-how-do-i-pass-in-global-objects-or-singletons-around) – explunit
Pierwszy utwór działa zgodnie z oczekiwaniami, jak pokazuje to skrzypce, http://jsbin.com/ifeyefo/1/. Coś jest nie tak z twoją konfiguracją. Czy to naprawdę kod, którego używasz, lub uproszczony przykład. –
@Andreas Köberle, przepraszam, nie mogę otworzyć skrzypiec. Jest to w przybliżeniu kod, którego używam. –