0

私は、ビューとコントローラーはお互いに見えないはずであると読んでいます。ビューとコントローラはお互いに見えませんか?どうすればいいの?

コントローラは、UIビューでボタンをクリックすると、どのように聞こえるのですか?

コントローラーがaddEventListenersのビューについて知る必要があります。または UIビューでは、コントローラー内の関数を呼び出すか、イベントをコントローラーにディスパッチする必要があります。

+0

このような場合には、静的ディスパッチャクラスを使用するのが一般的です。 – www0z0k

+0

私は正しく理解しています。各ビューにはビューuiによってトリガされるさまざまなuiオプションを持つ特定の静的ディスパッチャがありますか?コントローラーやメディエーターが聴いているのですか? – davivid

+0

私の現在のmvcはあまり純粋ではありません^^私たちは静的な 'EventDispatcher'インスタンスを使用しているので、どこにいてもサブスクライブされているインスタンスから聞こえるイベントをブロードキャストすることができます。ただし、 'PlayerModel.health changed - > update PlayerHealthBar.value'のようなものには[Bindable]を使ったimhoはより良い練習です – www0z0k

答えて

0

MVCの私の唯一の経験はわずかにのために耳を傾けている(MouseEvent.CLICKなど)をネイティブのフラッシュイベントを使用

私の見解をこのフレームワークを使用したときに、私は私のアプローチを説明してみますrobotlegsフレームワークを使用していますビューのメディエーターメディエータがネイティブイベントを受け取ると、アプリケーション固有のイベントLoginEvent.LOGINが送出されます。このイベントは、マップされて、コンテキストでコマンドマップを使用してコマンドを起動します。

申し訳ありませんが、それはあまり意味はありませんが、基本的にあなたの意見はネイティブイベントを発生させ、メディエータはこれらのネイティブイベントをリッスンし、アプリケーション固有のイベントを発生させます。あなたはあなたの視点のためにメディエーターを「耳」として使用し、それらの中から任意の論理を保持します。アプリケーションコンテキストを使用すると、特定のイベントが発生するたびにコマンドを起動して、ビューとコマンドを分けることができます。

+0

私は理解していると思いますが、どのようにクリックリスナーが異なるUI要素を区別していますか? e.target.name(login_btn、logout_btnなど)のようなものを使用していますか? – davivid

+0

ビューに3つのボタンがある場合は、ボタンごとに異なるカスタムイベントを発生させ、メディエータでこれらのイベントを聞くことができます。または、メディエータのネイティブフラッシュイベントのペイロードを調べて、それ。 – redHouse71

+0

ネイティブイベントを使用する利点は、ビューを使用して別のプロジェクトで使用することができ、カスタムイベントを変更する必要がなく、プロジェクト特有のイベントに対してビューがダムとなり、ネイティブイベントのみが処理されることです。あなたのメディエーターは、その特定のプロジェクトに縛られている唯一のものです。申し訳ありませんが、おそらく最も良い説明です。 – redHouse71

関連する問題