Tengo un módulo común en mi aplicación que recupera datos del servidor remoto y tengo los métodos get
para exportar los datos recuperados a otros módulos.Cómo usar RequireJS para cargar y ejecutar módulos solo una vez
supongamos que el nombre de este módulo es 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;
}
};
};
});
El problema es cuando defino otros módulos que utilizan MyData
, cada vez que se crearía una nueva instancia de MyData
, haciendo que para recuperar los datos de la servidor cada vez.
Podría utilizar el almacenamiento web (u otra variable global) para almacenar los datos devueltos, pero parece una mala solución.
¿Hay alguna manera de obligar a RequireJS a crear solo una vez?
P.S: en mi proyecto KnockoutJS que el usuario, y la variable data
es un ko.observable, así que tal vez nocaut tiene una solución para mi situación?
Gracias, esto fue muy útil. – IgalSt