我需要服务器上的数据可以离线使用我的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但不能在之后。请帮帮我,我很难过!
答案 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));
});
虽然它使初始请求稍微慢一点,但之后页面加载速度非常快。