この質問はおなじみのように聞こえますが、同様の質問をたくさん読んだので、自分の特定の状況を見つけることができませんでした.
gds (GlobalDataStructure) という JavaScript オブジェクトがあります。その名前が示すように、このオブジェクトには、プロジェクトのすべての Web ページに必要なすべての情報が含まれており、localStorage に保存されます (したがって、ビュー モデルを更新するだけでなく、最初にマップする必要があるのはそのためです)。AJAX 経由で読み取られるあらゆる種類のフィードが含まれています。
コンストラクター関数を使用して gds を作成します。この構造を大幅に簡素化し、できればこの質問を簡単にするために、gds が
function gdStructure(){
this.lastUpdate = new Date(2010,1,1);
this.family = new Object();
this.series = new Object();
this.product = new Object();
}
ので、私は持っています
gds= new gdStructure();
次に、js 配列に初期フィードからのデータを入力したら、次のことを行います。
viewmodel = ko.mapping.fromJS(gds);
ko.mapping.fromJS(gds,viewmodel);
次に、ビューモデルは各ページにバインドされます
ko.applyBindings(viewmodel);
したがって、これはすべて問題なく機能します。この問題は、たとえば、新しい家族のフィードを取得し、そのオブジェクトを更新したいときに発生します。私は次のことができます
gds.family=feed;
ko.mapping.fromJS(gds,viewmodel);
そして、すべてうまくいきますが、それは毎回 MASSIVE JS オブジェクトをマッピングしています。これは非常に遅いので、変更されたフィードだけを更新できる方法を見つける必要があります。理想的には次のようなものです..
ko.mapping.fromJS(gds.family, viewmodel.family);
しかし、これはうまくいかないようです。また、それは私がただ行うことができないオブジェクトであるためです。
viewmodel.family(gds.family)
誰でも私を助けることができますか?これはとてもシンプルに違いないと確信しています。
ありがとうございます。