ExtJS 4 の MVC パターンで問題が発生しました。少なくとも、問題は発生したと思います。この質問で複数の人にアプローチし、Sencha フォーラムに何度も投稿してきた私は、電球または確認を得ることを期待して、より多くの聴衆に目を向けています.
問題
アプリケーションには、さまざまなビューを開く機能があり、その一部はミニ アプリケーションです。さらに、ユーザーはビューの複数の同時コピーを開きたい場合があります。
このアプリケーションは、単一ページのクライアント側 Javascript アプリケーションです。
ExtJS 4 MVC モデルでは、すべてのコントローラーを Application クラスで定義する必要があります。これらのコントローラーは、アプリケーションが読み込まれるときに初期化されます。コントローラーは、ビュー、モデル、およびストアを追跡します。
コントローラー A を複数回初期化すると (ビューの複数のコピーを作成するなど)、同じデータ ストアを参照する 2 つのビューが作成され、アプリケーション イベント バスに重複したイベントが機能的に送信されます。
Component と Controller に新しいプロトタイプ メソッドを追加して、アプリケーションをリファクタリングし、a) サブ コントローラー (一部のコントローラーはかなり巨大になりました) と b) 動作するビュー専用のストアを定義します。サーバーからレコードを取得するなどの操作が必要な場合に、ハンドラーが簡単に使用できるように、モデルは引き続きコントローラーで定義できます。
質問
MVC についての私の理解は、モデルが Controller よりも View に直接関係していると信じるようになります。ExtJS 4 は、ロードされたデータの再利用を促進し、インスタンス化された同じクラスの多くのコピーを持たないように最適化する目的で、ストア (より古典的なモデルへのラッパーと見なすことができると思います) をコントローラーにアタッチすることを決定したと思います. ただし、ユーザーがビューの多くのインスタンスを使用できるようにする場合は、これを行うことはできないようです。私の考えでは、オブジェクト指向フレームワークでは多くのインスタンスを持つことが重要なオプションです。そのため、この傾向に逆らい、一部の Ext 基底クラスにプロトタイプを実装したのはそのためです。(ありがとうExt.implement!)。
すぐに使用できる MVC クラスを使用し、提供されたセッター、ゲッターなどを使用して、異なるデータがロードされたビューの複数の同時インスタンスを作成する方法はありますか?