1

ajax を介して新しい項目をリストに追加する必要がある場合、Knockout などを使用する最大の利点は何ですか。

これまでのところ、私が行ってきたことは、私の見解では、(関連付けられたビューモデルを使用して) エディター テンプレートを使用してアイテムのリストをレンダリングすることです。次に、新しいアイテムを追加するために、サーバー側のビューモデルをロードするアクションにリクエストを送信し、リストに追加される EditorTempte オブジェクトを返します。このような:

return Json(new { this.RenderPartialViewToString("MyEditorTemplate", model) });

ノックアウト方式では、アイテムを表示するために別のビュー モデルを実装し、それを表示するために別のテンプレートを実装する必要があります。ただし、この方法では、ビュー モデルを 2 つの場所で表現する必要があるため、コードを複製する必要があります。cserver 側のコードと、ノックアウト ビューモデルのビューです。それは悪い習慣ではありませんか?

何か不足していますか、それともノックアウトと MVVM の目的を理解していますか?

4

2 に答える 2

2

Knockout の最大の利点は、リストに新しい項目を追加するためにサーバーにアクセスする必要がないことです。すべてがクライアント側で行われます。これには、次のような複数の利点があります。

  • サーバーの負荷を軽減します。
  • エンド ユーザーのエクスペリエンスを向上させます。
  • サーバーとの対話なしで、ページ上の複数の要素をモデルで最新の状態に保つことができます。

この 2 つの優れた例は、これらの Knockout チュートリアルで見つけることができます。

コードの複製に関しては、これら 2 つのチュートリアルを見れば、コードを複製する必要がないことがわかります。例えば:

  1. リスト全体を表示するビューを作成します。
  2. リストに新しいアイテムを追加するには、新しいアイテムをページに追加するときにロードする部分ビューを作成します - その部分ビューは Knockout にバインドされます
  3. フォーム全体を送信すると、Knockout 経由で追加したアイテムを含め、そのリストのすべてが送信されます。

ViewModel はリスト アイテムに固有のものになります (必ずしもすべての ViewModel 全体を作成する必要はありません)。そして、あなたのビューは単一のリスト項目に固有です。

それが明らかであることを願っています。ノックアウトは非常に簡単で、前進するのに役立つ優れたドキュメントとチュートリアルがいくつかあります.

于 2012-11-20T21:34:36.653 に答える
1

私見、以下は、ノックアウトとasp mvcが混在するアーキテクチャの最もクリーンなオプションです。

ASP.net を Web サービスとして機能させ、ノックアウトですべてのビュー テンプレートとロジックを制御します。

そうしないと、ビューモデルが複製される可能性があり、モデルを変更する必要があるときにフロントエンド コードとバックエンド コードの両方をリファクタリングする必要があります。

于 2012-11-21T06:04:56.173 に答える