デスクトップアイコンを表す「デスクトップ」とすでに開いているウィンドウを最小化/復元するためのボタンがあるタスクバーを表す「タスクバー」という2つのコントローラを持つデスクトップのようなアプリケーションがあります。 MS Windowsのように働いています。別のコントローラに属しているビューを変更する
私が現在持っている問題は、「どのようにウィンドウを表示するべきか」というアプローチです。実際にアイコンをダブルクリックしたら、ウィンドウを作成する必要があります。これは、デスクトップコントローラーまたはタスクバーコントローラー(または、どこかでドラッグできるため、ビューポート上で直接行うこともできます)の両方で発生する可能性があります。ただし、ウィンドウを作成するときは、タスクバーに新しいボタンを作成して最小化/復元する必要があります。
このため、私はタスクバーコントローラのウィンドウを処理することを考えましたが、デスクトップコントローラからタスクバーコントローラに到達する方法はわかりません。
私は、現時点では私の心の中で3つのアイデアている:デスクトップコントローラは、直接TaskbarViewにボタンを
- が追加されますが、このように私はMVCパターン違反のように感じています。また、デスクトップビューでTaskbarViewを指定する必要があります。
- アイコンダブルクリック後のデスクトップコントローラは、タスクバーコントローラでカスタムイベントを発生させます。この場合、タスクバーはウィンドウを開き、ボタンを追加し、このアプローチはかなり直線的ですが、私は
- 別のコントローラから(この場合は、デスクトップからタスクバーに)コントローラを参照する方法をを知りませんExt.Applicationはデスクトップコントローラのitemdblclickイベントを登録します。このイベントが発生すると、タスクバーコントローラでリダイレクト(またはカスタムイベントの呼び出し)されます。この後、すべてがポイント2のようになります。このようにして、ルーティング機能(レールのような)を集中化しますが、アプリケーションオブジェクトが本当に大きくなる可能性もあります。また、私はそれを "巨大なコントローラ"として使ってすべてをルーティングしていますが、これは大きな問題ではありません。
- アプリケーションを2つのコントローラに分割しないでください(デスクトップとタスクバーは1つにする必要があります)、すべてが問題ありません。私はこのアプローチが正しいとは思わない。だから、
、私の質問は以下のとおりです。
- アプローチ私が使用する必要があります:1,2,3,4(または別の何かがあるかどうかを指定)?
- ウィンドウが属するべきもの:デスクトップコントローラ、タスクバーコントローラ、その他何か?
どんな答え
私はここに提案を追加しています:あなたはデスクトップコントローラー(親コントローラーを必要とせず)からデスクトップコントローラーにthis.getController( 'controllerName')を書き込むか、デスクトップコントローラーにthis.application.getController( 'controllerName')もっと論理的だと感じます。 –