如何从存储在html5本地存储中的模型中应用knockoutjs绑定?使用jStorage

时间:2013-02-28 22:29:59

标签: knockout.js local-storage amplifyjs jstorage

我需要服务器上的数据可以离线使用我的KnockOut.js ViewModel。我正在使用jStorage来帮助我对HTML5 localStorage缺乏了解。这就是我的尝试:

var localModel = $.jStorage.get("model");
if(!localModel){//No local data found
    $.post("server/data.php",function(data){
        model = ko.mapping.toJS(data);
        $.jStorage.set("model",model);
        ko.applyBindings(new LightsViewModel(model));
    },"json");
} else {//Local data found
    ko.applyBindings(new LightsViewModel(localModel));
}

当我比较本地对象和帖子数据时,它们都完全相同。我能够在实际的post函数中applyBindings但不能在之后。请帮帮我,我很难过!

1 个答案:

答案 0 :(得分:1)

我找到了使用localStorage的不同插件的解决方案。 http://amplifyjs.com/api/request/我特别使用了他们的请求方法。这是解决方案:

amplify.request.define("model","ajax",{
    url:"server/data.php",
    dataType:"json",
    type:"POST",
    cache:"persist"
});

amplify.request("model",function(data){
    model = ko.mapping.toJS(data);
    ko.applyBindings(new LightsViewModel(model));
});

虽然它使初始请求稍微慢一点,但之后页面加载速度非常快。