1

我需要来自服务器的数据可以离线用于我的 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 函数中应用绑定,但之后不能。请帮帮我,我难住了!

4

1 回答 1

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));
});

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

于 2013-03-01T20:09:01.513 回答