0

私は2つ持っていListViewsます(別々のビューで)。これらのビューは別々のビューモデルにバインドされていListViewsますが、同じエンティティタイプが含まれています。どちらのビューでも、ユーザーはアイテムを選択して、その詳細/編集ビューに移動できます。

この詳細ビューを2つのリストビュー間で共有するにはどうすればよいですか?

これが私が試したことです:

選択したアイテムを詳細ビューのビューモデルのプロパティに割り当てます

これは最初は機能しているように見えましたが、実際にはKendoMVVMを壊しています。アイテムはリストビューのビューモデルにあるため、別のビューモデルのプロパティにアイテムを割り当てると問題が発生します。

各ビューのショーイベントでデータを更新する

これはほぼ機能しますが、いくつかの問題があります。1)常に最新のデータを取得するのは遅くなる可能性があります。2)詳細ビューに変更を保存してリストビューに戻る場合、保存は非同期であるため、ListViewデータを呼び出す前にそれらの変更が保持される保証はありません。これは、MVVMとオブザーバブルの利点の1つも無効にします。

ビュー間でビューモデルを共有する

私が見たリストと詳細ビューの例では、両方のビューがビューモデルをselectedItemプロパティと共有しています。同じ詳細ビューに移動する2つのリストビューがあるため、これは特定のケースでは不可能です。ビューモデルが巨大にならないように、ビューごとに個別のビューモデルを使用することをお勧めします。混乱。すべてのビューで単一のビューモデルを共有する必要がありますか?

私は何が欠けていますか?

4

1 に答える 1

0

おそらく、toJSON()メソッドを使用して観察可能なモデルをプレーンなオブジェクト モデルに抽出し、それを再度ラップして、そこから新しい観察可能なモデルを作成できます。これにより、既存のバインディングがクリアされ、最初のアプローチで見つかった競合が回避されます。

var model = kendo.observable( otherModel.toJSON() );
于 2013-05-31T01:51:37.150 に答える