【发布时间】:2017-11-11 08:46:43
【问题描述】:
在我的项目中,我需要为应用程序中的所有模块维护一个公共数据对象。
这是我存储所有 REST API 和应用范围数据的地方。 (类似于 store 在 react redux 中)
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: ''
}
}
});
我需要ViewModel 文件中的dataService.js 文件来调用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 的值被设置为默认值。如何将其保存为应用范围的数据?
【问题讨论】:
-
我不太确定,但在我看来,您每次调用 dataService 时都会创建一个新实例,在其中创建初始“应用程序”,将其存储在全局引用变量中,以便您可以叫那个。
标签: javascript knockout.js requirejs oracle-jet