###前置き
javascriptのクライアントサイドアプリケーションをMVCで設計する時についての質問です。
※jsに限らずGUI系であれば共通することだと思ったので、iosとandroidのタグ付けをしました。
MVCに関する説明を一部読むと、UIへのイベントをどのように処理するかを判断するのは
ビューではなくコントローラーであると書いてありました。
これに関してビューに該当するクラスを実装する際に指針が分からず、
最近、混乱しております!
以下、疑問点です。
イベントが発生したビューに関する処理も一度、コントローラーに委譲する必要があるのか?
例えば、ヘッダーナビゲーションのUIを管理するビュークラスがあるとします。
このヘッダーナビゲーションはヘッダー内のメニューにマウスオーバーすると、
サブメニューがプルダウンのように表示される仕様であるとします。
このような場合、このヘッダーナビゲーションを管理するビュークラスで、
マウスオーバーのイベントを探知した時、サブメニューを表示させる処理を
コントローラーに委譲せずにそのまま行なってはいけないのでしょうか?
イメージとしては以下のようなものです。
※コードはtypescriptもどきです。(記述に間違ってる可能性有り)
typescript
1class HeaderView { 2 3 constructor(public $navigationLinks: jquery) {} 4 5 this.$navigationLinks.on("mouseenter", this.showSubMenu); 6 7 showSubMenu(event: Event) { 8 9 //サブメニューを表示させる処理 10 11 } 12 13}
それとも、以下のようにそのビューに関する処理でさえも、コントローラーにイベント処理の判断を一旦振るべきなのでしょうか?
class HeaderView { constructor(public $navigationLinks: jquery) {} this.$navigationLinks.on("mouseenter", () => { //コントローラーへマウスオーバーイベントの発生を通知 } showSubMenu(event: Event) { //サブメニューを表示させる処理(コントローラー側から実行される) } } class someController { //マウスオーバーのイベント通知を受け取り、 //HeaderViewのshowSubMenuを実行 }
後者の例のように該当ビュークラス自身に関する処理を
わざわざ一度、コントローラーにイベントが発生した時に委譲するのは
二度手間に感じてしまうのですが、どうすれば良いのでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/03/14 06:48
2016/03/14 11:03
退会済みユーザー
2016/03/16 09:55 編集
2016/03/14 14:07
退会済みユーザー
2016/03/16 10:24 編集
2016/03/16 11:23
退会済みユーザー
2016/03/16 12:27