我的应用程序上有一个通用模块,可以从远程服务器检索数据,并有get
方法将检索到的数据导出到其他模块。
让我们假设这个模块的名称是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;
}
};
};
});
问题是当我定义其他使用的模块时MyData
,每次它都会创建一个新的实例MyData
,导致它每次都从服务器检索数据。
我可以使用网络存储(或其他全局变量)来存储返回的数据,但这似乎是一个糟糕的解决方案。
有没有办法强制 RequireJS 只创建一次实例?
PS:
在我的项目中,我使用了 KnockoutJS,并且data
变量是 ko.observable,所以也许 Knockout 对我的情况有解决方案?