1

KnockOut.js ViewModelでオフラインで利用できるようにするには、サーバーからのデータが必要です。HTML5localStorageに関する知識が不足しているのを助けるためにjStorageを使用しています。これは私が試したことです:

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関数内でBindingsを適用できましたが、後は適用できませんでした。私を助けてください、私は困惑しています!

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 に答える