在我的项目中,我需要为应用程序中的所有模块维护一个公共数据对象。
这是我存储所有REST API和 app wide data 的地方。 (像反应还原中的商店那样)
dataService.js
define(['jquery', 'app'], function($, app) {
var url = app.serviceURL;
function loginUser(data) {
data.type = "login";
return $.ajax({
url: url + '/authentication.php',
data: data,
method: "POST"
});
};
function logoutUser(data) {
data.type = "logout";
return $.ajax({
url: url + '/authentication.php',
data: data,
method: "POST"
});
};
return {
actions: {
loginUser: loginUser,
logoutUser: logoutUser
},
user: {
isLoggedIn: ''
}
}
});
我要求dataService.js
个文件中的ViewModel
个文件来调用login
和logout
个服务。
dataService.actions.loginUser(data)
.then(function(data) {
dataService.user.isLoggedIn = true; // I changed the app wide data here
}
});
我的问题是,当我在其他ViewModel中需要dataService
时,dataService.user.isLoggedIn
的值被设置为默认值。如何将其保存为app宽数据?
答案 0 :(得分:-1)
它可能为每个模块实例化一个新对象。您可以通过执行以下操作来创建全局变量:
document.dataService = new dataService();
尝试使用上述方法。这可能会解决您的问题。