Ho un modulo comune sulla mia app che recupera i dati dal server remoto e dispone dei metodi get
per esportare i dati recuperati su altri moduli.Come utilizzare RequireJS per caricare ed eseguire moduli solo una volta
lascia supporre che il nome di questo modulo è 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;
}
};
};
});
Il problema è quando mi definisco altri moduli che utilizzano MyData
, ogni volta che si creerebbe una nuova istanza di MyData
, inducendolo a recuperare i dati dal server ogni volta.
È possibile utilizzare la memoria Web (o un'altra variabile globale) per archiviare i dati restituiti, ma sembra una soluzione non valida.
Esiste un modo per forzare RequireJS a creare una sola istanza?
P.S: Nel mio progetto ho KnockoutJS utente e la variabile data
è un ko.observable, quindi forse ad eliminazione diretta ha una soluzione per la mia situazione?
Grazie, questo è stato molto utile. – IgalSt