0

ビューにバインドされているjavascriptオブジェクト(viewModel)があります。サーバーから新しいバージョン(newViewModel)を取得しています。(この時点での株式市場価格の適用を想像することができます)

古いviewModelの参照を失いたくないので、newViewModelをバインドしたくありません。

したがって、サーバーの応答から既存のjavascriptオブジェクトのすべてのプロパティを更新する必要があります!

これはおそらくjavascriptの質問ですが、私のviewModelには非常に多くの監視可能なプロパティとサブプロパティがあります。(ノックアウトの観測量)

追伸:jQueryの$.extendは機能しません。

更新(大丈夫そうです):

ko.mapping.fromJS(newViewModel、viewModel); 動作しているようです..「Vs.NetIntellisense」では過負荷が表示されなかったため、認識できませんでした。

私のオブジェクトは非常に深く構造化されています。問題があればお知らせします。

更新(機能しません):

viewModel.x [] length = 2

newViewModel.x [] length = 12

上記のコードは、すべてのxを新しいものに置き換えます。(viewModel.x [0]、viewModel.x [1]の参照を失いました)!!

そのため、HTMLがオブジェクトと同期されていません。viewModel.x [0]は右側のバスケットにありますが
、左側のバスケットにはありません(画面)

4

1 に答える 1

0

魔法の方法はありません。古い配列要素をニュースと照合する必要があるからです。「コード」は配列要素の「キー」を知る必要があります。

古い配列でnewElementが見つかった場合は、すべての配列要素にアクセスします。見つからなかった場合は、oldElementのプロパティを更新します。oldArrayにnewElementを追加します。

痛いですが、私はしなければなりませんでした。

于 2012-08-07T10:03:16.523 に答える