2012-04-01 28 views
4

画面上に複数のビューモデルを作成することに関する推奨事項があるかどうかは疑問でした。私が持っている:Ajaxを使用して複数のビューモデルを作成するベストプラクティス

a)のタスク

b)は、私は2×Ajaxの成功にこれらを移入ユーザー

のリスト(別のAJAX呼び出しを持つビューモデルのリストを持っているビューモデル)のようなもの:

success: function (data) { 
    masterVM.User = ko.mapping.fromJS(data, mapping); 
    ko.applyBindings(masterVM); 
} 

/* another ajax call: */ 
success: function (data) { 
    masterVM.Task = ko.mapping.fromJS(data, mapping); 
    ko.applyBindings(masterVM); 
} 

現在、それぞれのajax成功の呼び出しを呼び出しています。

私の質問がはっきりと簡潔であることを願っています。必要に応じて詳細をお尋ねください。

よろしく フィル

答えて

4

当社は現在、当社のメインビューモデルのビューモデルにデータをマップするためにko.mappingを適用し、その後、単一のAjax呼び出しでのページへのすべてのデータを送信することによって、これを処理します。

私たちはあなたと同じように2回の呼び出しを行いましたが、作成されたHTTP要求の数を減らすほうがよいと判断されたため、データセットを1つの階層オブジェクト構造に結合しています。これはあなたのサービス疎結合を維持しますので、私は別の呼び出しを行うお勧めします限り、あなたはパフォーマンスの問題に気づくいけないよう Map JSON data to Knockout observableArray with specific view model type

3

この質問とその後の答えは私たちが取っているアプローチのスニペットが含まれていますあなたのプレゼンテーションが必要です。

しかし、その問題が解決しない場合は、Webサービスでデータを集約してワンショットで返すことができます。しかし、あなたはこれによって少し保守性を失います。

+1

私はあなたのサービスをモジュール化することが良いことであることに同意します。私たちもそうしています。しかし、モジュラーサービスを呼び出す複合サービスも作成し、複数のサービス結果をまとめてバンドルすることで、単一の呼び出しで返すことができ、コンシューマ(この場合はビュー)のスコープも適切にできます。ここで参照してください:http://soapatterns.org/ – KodeKreachor

+0

私たちのアプローチはまた、非常に高いレベルの保守性と単一の責任原則を守っています。 – KodeKreachor

+0

"複合" Webサービス(または私が集約Webサービスと呼ぶもの)をうまく動かすことに同意します。その悪い解決策ではない、私はそれを自分でやった。しかし、私は必要がない限り、余分なサービスを追加しないことがよくあります。通常はパフォーマンスの問題や、再利用するためです。私はちょうどPhilの長所と短所をレイアウトしています –

関連する問題