1

   私はこの質問についてSOを検索しましたが、基本的にこの特定のシナリオに関する質問は見つかりませんでした。したがって、私の質問の理由。
    私はMVCパターンの基本的で抽象的な理解を持っています。コントローラーは必要なアクションに基づいて適切なモデルを呼び出します。モデルには実際のビジネス/データロジックが含まれ、ビューには結果が表示されます。私が理解するのに苦労しているのは、実際の実装です。
   当初、私の仮定は次のとおりでした。コントローラーはモデルを呼び出します。モデルは情報を処理し、データをコントローラーに返しますコントローラはビ​​ューを呼び出し、このデータをビューに渡します。ビューは単にデータを表示します。MVCに関する記事をさらに読んだ後、モデルが実際にはデータをコントローラーに返さないことに気付きました。むしろ、それは発火しますコントローラが適切なビューを呼び出すことを可能にするイベント。
私の質問は、このイベントの発生部分に焦点を

   当てています。Q.1:イベントは本当に発生する必要がありますか?モデルが処理を完了し、制御をコントローラーに戻すと、コントローラーは単にビューを呼び出すことができませんか?
   Q.2:実際の実装では、ModelオブジェクトがControllerクラスに注入されます。したがって、Modelオブジェクトは、基本的にControllerがそれを何と呼んでいるのかわかりません。イベントを発生させるコントローラーをどのように知るのですか?そして、どのコントローラーがその通知を期待しているのかをどうやって知るのでしょうか?
   Q.3:コントローラーがビューを呼び出し、現在のModelオブジェクトを挿入して、ビューがそれを使用して必要なデータを取得できるようにします。これは正しいですか、それとも間違っていますか?間違っている場合、なぜそれが間違っているのですか、そしてそれを行うための適切な方法は何ですか?
   ここや他のサイトでMVCに関する質問を読み、MVCダイアグラムを表示しましたが、実際にドットを接続する方法で接続することができませんでした。
   ありがとう。

4

1 に答える 1

0

MVC のさまざまなコンポーネントをどのようにリンクするかについては、さまざまな方法があります。「ゴールデンルール」はないと思います。

私はこの写真に示されている方法でそれを使用します:

ここに画像の説明を入力

オブジェクトの作成は次のようになります。

  1. app オブジェクトは、ルートに応じてコントローラーを作成します。ルーターはコントローラーに挿入されます。
  2. コントローラは、ルートに応じてモデルを作成します。モデルは IoC コンテナーによって作成されます。
  3. コントローラーはビューを作成し、モデルをビューに挿入します。

私の状況では、次のような質問に答えることができます。

Q1: いいえ、イベントは使用しません。必要はありません。コントローラーはモデルを呼び出し、完了するとモデルに状態があり、ビューで使用できます。

Q2: コントローラがモデルを作成します。モデルには、コントローラーまたはビューに関する知識がありません。

Q3: これは私が実装する方法です。

于 2012-09-17T18:39:43.073 に答える