Ich habe ein gemeinsames Modul in meiner App, das Daten vom Remote-Server abruft und über get
Methoden verfügt, um die abgerufenen Daten in andere Module zu exportieren.So verwenden Sie RequireJS zum Laden und Ausführen von Modulen nur einmal
Nehmen wir an, dass dieses Modul Name ist 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;
}
};
};
});
Das Problem ist, wenn ich andere Module definieren, die MyData
verwenden, jedes Mal, es wäre eine neue Instanz von MyData
zu schaffen, es bewirkt, dass die Daten aus der abrufen Server jedes Mal.
Ich könnte Webspeicher (oder andere globale Variable) verwenden, um die zurückgegebenen Daten zu speichern, aber es scheint wie eine schlechte Lösung.
Gibt es eine Möglichkeit, RequireJS zu zwingen, nur einmal eine Instanz zu erstellen?
P. S: In meinem Projekt ich Benutzer KnockoutJS und die data
Variable ist ein ko.observable, vielleicht Knockout eine Lösung für meine Situation hat?
Vielen Dank, das war sehr hilfreich. – IgalSt