1

JavaScript で MVP - Passive View パターンの実装を考えています。ほとんどの場合、ビューは、プレゼンターがイベント リスナーをアタッチする単純な dom 要素になります。しかし、JavaScript ベースの擬似選択ボックス、自動提案、aria 機能などのウィジェットに関しては、これを JavaScript ビュー クラスの一部にする必要がありますか?それとも、ビューを変更するロジックをプレゼンターの一部にする必要がありますか? 私はjavascriptMVCs ビューを見てきましたが、それらはロジックなしで生成されたテンプレートのみのようです。しかし、私にとっては、html 選択ボックスをリッスンしているプレゼンターと、実際の選択ボックスを模倣する JavaScript ロジックを備えた擬似選択ボックスをリッスンしているプレゼンターとの間に違いはないようです。どちらも、ボックスが内部でどのように機能しているかを気にする必要はありません。変更イベントをリッスンするだけです。

それで、あなたはどう思いますか。ビュークラスの仕事は何ですか。

4

3 に答える 3

2

View オブジェクトは、描画自体を担当する必要があります。パッシブ ビューは、何をすべきかではなく、どのようにすべきかを知っます。独自のイベントを発生させる責任を負う必要があります。カスタム セレクト ボックス ウィジェットだからといって、通常のセレクト ボックスと何ら変わりはありません。

プレゼンターがすべてのビューの責任を引き継いだ場合、ビューはまったく必要ありません。発表者だけでも構いません。

于 2010-07-20T23:32:56.393 に答える
1

ビューの仕事は、ビュー テクノロジーへのアダプターです。この場合、ビュー テクノロジは、JavaScript を介した HTML 上の jQuery である可能性があります。ビューは、次の 3 つのことを行うように設計する必要があります。

  • イベントがいつ発生するかを把握し、これらのイベントをプレゼンターに伝えます (これはpostal.jsなどのメッセージング フレームワークを使用して間接的に行われる場合があります) 。
  • 発表者に (尋ねられたら) 「xの値は何ですか」と伝えます。ここで、xはビューに表示される値です。
  • ビューの値を変更するには、プレゼンターからのメッセージを (通常はダイレクト メソッド呼び出しを介して) 受け入れます。

パッシブ ビュー パターンのビューはステートフルではありません。繰り返しますが、ビューは状態を表していません。これが意味することは、すべての状態と状態遷移の知識がプレゼンターによって表されるということです。ビューは、プレゼンターと実際のビュー テクノロジーとの間の間接性を提供する単なる接着剤です。 上記の 3 つの箇条書きを超えて、そこに含まれる情報をどうするかについての知識を要約するものではありません。ビューが一貫した状態にあることを期待してはならないため、これは重要です。ビューの状態を管理する責任を常にプレゼンターに持たせる必要があります。

ここに画像の説明を入力

上記のスタックは、モデル、ビュー、およびプレゼンターの相互作用と、ビュー テクノロジおよびコントローラーとの関係をどのように予測するかを示しています。

  • ブラウザー、HTML、および DOM (jQuery によって管理される) は、ビュー テクノロジです。これらは本質的に複雑であり、モデルを表すことができません。
  • ビューは、ビュー テクノロジーからロジックを保護します。プレゼンター内のプレーンな古いコードに集中できるように、間接化を提供します。ビューは、プレゼンターに返信するために何らかのメッセージを使用する必要があります。これにより、ビューとプレゼンターの間の双方向の依存関係が防止されます。また、複数のプレゼンターがビューを操作することもできます。
  • プレゼンターは、ビューの抽象的な性質を理解する責任があり、ビューへのインターフェイスに基づいてモデルの状態を管理する必要があります。コントローラーからモデルを取得する方法と、モデルをサーバーに保持する方法を理解できます。
  • モデルは、特定の時点での状態を表したものです。また、コントローラープレゼンターの間の DTO としても機能します。JavaScript では、プレゼンターの動作をモデルに単純に追加するのが簡単で、場合によっては望ましいこともあります。
  • コントローラーは、アプリケーション内のナビゲーションを調整し、プレゼンテーションからバックエンド サービスを抽象化する役割を果たします。
于 2012-03-07T18:50:20.147 に答える
1

JavaScriptMVC のビューはダミーのクライアント側テンプレートです。そのノード コントローラーは、より伝統的なビューの役割を担う傾向があります。

于 2010-08-24T21:55:33.290 に答える