2012-02-28 16 views
1

ビューがコントローラと通信する最も良い方法は何ですか?ほとんどの例では、Ext.dispatchを使用していますが、このいくつかの理由のために私には間違っているようだ:ビューでディスパッチイベントまたはファイアイベントを使用する必要がありますか?

  1. それはカップルコントローラへのビューは、再利用するのは難しいのビューを作成します。ビューが別のビュー内にネストされている場合、同じコントローラ/アクションを呼び出すことはもはや望ましくないかもしれません。
  2. ビューには、どのアクションを取るかがコントローラに指示され、階層が反転されます。コマンドがダウンし、イベントが上がるはずです。

ビューは常にイベントを発生させ、特定のコントローラを呼び出さないようにする必要がありますか?このようにして、親ビュー(存在する場合)またはインスタンシングするコントローラが応答する方法を決定することができる。この場合、含まれているビューは処理できない子イベントをバブルアップする必要があります。そのため、階層内で上位に処理できます。

OR

はビューは、特定のコントローラのアクションを呼び出す上でイベントを発生するを好むが、極端に行くべきではないでしょうか。私はビューが常に同じアクションをトリガする必要があるケースを考えることができるので、好きなことを強調します。ログアウトボタン。これは滑りやすい斜面のようです...あなたはそのボタンのアクションをオーバーライドする必要がないことを確実にどのように知っていますか?

ありがとうございました。

答えて

0

私はいつも私の見解でイベントを起こさせます。あなたが概説したように、派遣がうまくいって、あなたはそれほど心配する必要がない場合があります...しかし、なぜ気になるのですか?私は常にビューのイベントを放つという一貫性が好きです。

+0

イベントの処理は親ビューの中か、コントローラーレベルでのみですか? – alekop

+0

常にコントローラーレベルで実行してください。 – Justin

+0

これは妥当だと思います。しかし、コントローラーがいくつかのネストされたビューを持つビューを作成すると、そのビューと明白な関係がない数十のイベントがすぐに浸透する可能性があります。ビューにローカルで子イベントを処理して「飲み込む」機能がない場合は、どのように複雑な問題に対処していますか?それぞれのビューを自分のコントローラーに関連付ける必要はありませんか?このデカップリングの原則は、やや速いです。 :) – alekop