刷新页面后可以用 Knockout JS 保存 ViewModel 的数据吗?

Posted

技术标签:

【中文标题】刷新页面后可以用 Knockout JS 保存 ViewModel 的数据吗?【英文标题】:It's possible to save the data of the ViewModel with Knockout JS after refresh page? 【发布时间】:2019-01-24 15:58:44 【问题描述】:

我想知道是否可以保存可观察值中的更改并在刷新页面后获取 ViewModel 的最后状态。

【问题讨论】:

您可以为此使用本地存储。这是一个选择吗? 【参考方案1】:

您实际上可以使用ko extender 来实现这一点。

有一些,其中之一是knockout.persist。

使用此绑定,您可以执行以下操作:

// Will automatically load and save the value if it exists in the localStorage
this.persistedValue = ko.observable().extend( persist: 'persistedValue' );

// Will automatically load and save the array if it exists in the localStorage
this.persistedArray = ko.observableArray().extend( persist: 'persistedArray' );

因为我在一些项目中使用过它,所以它总体上工作得很好。

现在,如果 localStorage 不是一个选项,您可以考虑以类似的方式通过 cookie 或通过 JSON.stringify 添加到浏览器中的 URL 来保持状态。

这完全取决于您的任务/用例的限制条件。

【讨论】:

以上是关于刷新页面后可以用 Knockout JS 保存 ViewModel 的数据吗?的主要内容,如果未能解决你的问题,请参考以下文章

用JS怎么实现刷新页面后保留刷新前的页面上的数据显示

用js操作 怎样 实现刷新当前页面 而 不改变请求头的referer 值

thinkphp调用页面后刷新没效果

怎么刷新页面后,js就不执行了

用js实现关闭或刷新页面时提示保存更改信息

CSS 样式在刷新后显示,然后在 Knockout 中不可见