我如何与离线存储和Knockout.js实现MVVM?(How can I implement MV

2019-07-30 13:16发布

我可以实现MVVM与Knockout.js。 但我想用跨浏览器使用它(FF和Chrome),支持HTML 5的离线存储。

我想HTML对象绑定到离线存储。

Answer 1:

我还没有尝试过,但有一个knockout.localStorage 在GitHub上的项目 ,这似乎是你在找什么。

有了该插件,你应该能够传递一个对象作为第二个参数,当你创建你的观察到,节省了可观察到的localStorage。

从文档:

var viewModel = {
  name: ko.observable('James', {persist: 'name'})
}

ko.applyBindings(viewModel);


Answer 2:

您可以使用库如可序列化对象的localStorage(跨浏览器)amplify.js。 它回落到旧的存储工具,旧的浏览器了。 首先,拆开包装的观测到一个JSON对象,然后使用amplify.store序列化对象,并将其存储。 然后,你可以把它退了出来,当你想获取它映射回可观察对象。

http://amplifyjs.com/api/store/



Answer 3:

http://craigcav.wordpress.com/2012/05/16/simple-client-storage-for-view-models-with-amplifyjs-and-knockout/

他的解决方案的工作!



Answer 4:

我制定了一个解决方案基础上的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例子。



文章来源: How can I implement MVVM with offline storage and Knockout.js?