我可以实现MVVM与Knockout.js。 但我想用跨浏览器使用它(FF和Chrome),支持HTML 5的离线存储。
我想HTML对象绑定到离线存储。
我可以实现MVVM与Knockout.js。 但我想用跨浏览器使用它(FF和Chrome),支持HTML 5的离线存储。
我想HTML对象绑定到离线存储。
我还没有尝试过,但有一个knockout.localStorage
在GitHub上的项目 ,这似乎是你在找什么。
有了该插件,你应该能够传递一个对象作为第二个参数,当你创建你的观察到,节省了可观察到的localStorage。
从文档:
var viewModel = {
name: ko.observable('James', {persist: 'name'})
}
ko.applyBindings(viewModel);
您可以使用库如可序列化对象的localStorage(跨浏览器)amplify.js。 它回落到旧的存储工具,旧的浏览器了。 首先,拆开包装的观测到一个JSON对象,然后使用amplify.store序列化对象,并将其存储。 然后,你可以把它退了出来,当你想获取它映射回可观察对象。
http://amplifyjs.com/api/store/
http://craigcav.wordpress.com/2012/05/16/simple-client-storage-for-view-models-with-amplifyjs-and-knockout/
他的解决方案的工作!
我制定了一个解决方案基础上的subscribe
KnockoutJS的功能。 它需要一个模型,并坚持所有的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例子。