Mam wspólny moduł na mojej aplikacji, który pobiera dane ze zdalnego serwera i ma metody eksportu danych do innych modułów.Jak używać RequireJS do ładowania i uruchamiania modułów tylko raz
Załóżmy, że nazwa tego modułu jest MyData
:
define([], function(){
return function(opts) {
var data = null;
// go get data with ajax
var getData = function(){
$.ajax("getData").done(function(response){
data = response;
});
};
getData();
// return public api
if (arguments.length !== 0) {
var method = arguments[0];
switch (method) {
case "get": return data;
}
};
};
});
Problemem jest to, kiedy określić inne moduły, które wykorzystują MyData
, za każdym razem byłoby utworzyć nową instancję MyData
, powodując jej odzyskać dane z serwer za każdym razem.
Mogę użyć pamięci masowej sieci Web (lub innej zmiennej globalnej) do przechowywania zwróconych danych, ale wygląda na to, że jest to złe rozwiązanie.
Czy istnieje sposób zmuszenia RequireJS do utworzenia tylko raz wystąpienia?
P.S: w moim projekcie KnockoutJS I użytkowników, a zmienna data
jest ko.observable, więc może nokaut ma rozwiązanie dla mojej sytuacji?
Dziękuję, to było bardzo pomocne. – IgalSt