网络是一个无状态的地方,所以是的,您必须将状态保存在某个地方,有几种方法可以做到这一点...您可以依靠后端服务将它们存储在数据库/文件/...中,或者您可以使用新的 HTML5 功能之一,例如会话存储或本地存储。
以会话存储为例,您可以执行以下操作:
首先,您需要一些函数来加载和存储数据。由于您只能在 session- 和 localstorage 中存储简单的字符串,因此我将它们序列化为 JSON:
var store = {
save: function(object) {
sessionStorage.setItem('fruits', JSON.stringify(object));
},
load: function() {
return JSON.parse(sessionStorage.getItem('fruits') || '{}');
}
};
然后在每次更改时您都可以存储数据:
registry.byId("apple").on("change", function(value) {
fruits.apple = value;
store.save(fruits);
});
registry.byId("banana").on("change", function(value) {
fruits.banana = value;
store.save(fruits);
});
registry.byId("lemon").on("change", function(value) {
fruits.lemon = value;
store.save(fruits);
});
最初你可以加载数据:
var fruits = store.load();
并使用它来初始化小部件的状态:
registry.byId("apple").set("value", fruits.apple || false);
registry.byId("banana").set("value", fruits.banana || false);
registry.byId("lemon").set("value", fruits.lemon || false);
这是一个示例:http://jsfiddle.net/3b2s15xm/ 尝试更改选项并重新加载页面。通常会再次取消选中复选框,但现在它实际上会在您加载页面时从会话存储中重新加载数据。
您需要知道的一件事是,您需要支持的浏览器是否具有这些 HTML5 功能,您可以在 caniuse.com 上查看。