我可以用Knockout.js实现Mvvm。但我想用跨浏览器(FF和Chrome)支持Html 5离线存储。如何实现具有脱机存储和Knockout.js的MVVM?
我想将html对象绑定到脱机存储。
我可以用Knockout.js实现Mvvm。但我想用跨浏览器(FF和Chrome)支持Html 5离线存储。如何实现具有脱机存储和Knockout.js的MVVM?
我想将html对象绑定到脱机存储。
我还没有尝试过,但有一个knockout.localStorage
project on GitHub,这似乎是你在找什么。
使用该插件时,您应该能够传递一个对象作为第二个参数,当您创建您的observable时,它将observable保存到localStorage中。
从文档:
var viewModel = {
name: ko.observable('James', {persist: 'name'})
}
ko.applyBindings(viewModel);
可以使用库诸如可以序列对象localStorage的(跨浏览器)amplify.js。它也回落到旧版浏览器的旧版存储工具中。首先,将可观察对象解包为JSON对象,然后使用amplify.store序列化对象并存储它。然后,您可以将其拉出并在您想要取回时将其映射回可观察对象。
请注意,AmplifyJS似乎不支持版本为'1.0 beta'以上的cookie [http://amplifyjs.com/changelog/] – jamiebarrow 2013-01-22 23:05:30
我根据KnockoutJS的subscribe
功能制定了解决方案。它需要一个模型并坚持所有的observable
属性。
ko.persistChanges = function (vm, prefix) {
if (prefix === undefined) {
prefix = '';
}
for (var n in vm) {
var observable = vm[n];
var key = prefix + n;
if (ko.isObservable(observable) && !ko.isComputed(observable)) {
//track change of observable
ko.trackChange(observable, key);
//force load
observable();
}
}
};
检查http://keestalkstech.com/2014/02/automatic-knockout-model-persistence-offline-with-amplify/代码和JSFiddle示例。
我已经使用这个,工作得很好,很干净整洁。 – 2013-09-05 10:24:04