【发布时间】:2015-04-02 07:41:43
【问题描述】:
根据从 Web 服务获取的一些数据,我使用敲除在页面中执行各种操作。用户可以在之后选择某些东西并通过一些选择输入来操作数据,这会影响淘汰赛的 viewModel。
当用户完成更改后,它会继续下一个表单(带有 POST),这是另一个网页。
我想做的是在它离开页面之前将当前视图模型存储在 localStorage 中,如果他/她按下,从 localStorage 加载视图模型。
所以在用户离开页面之前在我的 viewModel 中我会这样做:
localStorage.setItem("vM", JSON.stringify(self));
然后在我的第一页中:
var viewModel; viewModel = JSON.parse(localStorage.getItem("vM"));
if(viewModel == undefined || viewModel == null) viewModel = new vM();
ko.applyBindings(viewModel);
但是从 json 解析出来的 viewModel 并不是一个有效的淘汰模型。有没有办法做到这一点?
谢谢
【问题讨论】:
-
您必须为您的视图模型创建一个自定义构造函数,该构造函数知道如何从 JSON 构建它,或者如果您的视图模型很简单,您可以使用 mapping plugin。
标签: knockout.js