2

私は ExtJs の MVC の概念をごく簡単に知っています。知識のギャップを埋めるのを手伝ってくれませんか?この方法で単一のビューを作成する方法しか知りません...

Ext.define('My.controller.Contacts', {
    extend: 'Ext.app.Controller',
    stores: ['Contacts'],
    views: ['ContactsGrid'],
    refs: [{ref: 'grid', selector: '', xtype: 'contacts-grid', autoCreate: true}],

    getGrid: function() {
        var g = this.getGrid();
        return g;
    }
});

this.getGrid()あなたに同じグリッドビューを与えるようです。しかし、次の場合はどうでしょう。

  1. グリッド ビューの複数のインスタンスを動的に作成したいのですが、どうすればよいですか? 慣例により、それらをどこに保存しますか?

  2. 私が作成したビューごとに、私が行うように構成オブジェクトを与えたいのですExt.create(somecontrol, config);が、この場合、MVC では参照に含まれていますか? 作成するすべてのビュー インスタンスに対して、この構成オブジェクトをどこに挿入すればよいですか?

  3. 私は店を持っていContactsます。これらすべてのビューと店の関係は何ですか? それぞれに 1 つですか、それとも 1 つのストアを共有していますか?

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

4

2 に答える 2

2

これらすべてについて、答えは「場合による」になります。

  1. 起動時に読み取るものであれば、ビュー定義に動的ビューを作成します。それ以外の場合は、ボタンをクリックしてビュー要素を追加する場合、コントローラーにすべてを含めるか、コントローラーにメソッドを呼び出すことができますビューを実際に作成するビュー。おそらく後者を使用しますが、ビューロジックをカプセル化する方法によって異なります。

    これらのビューの「保存」に関する限り、DOM ルックアップと同様に、後で参照できるようにビューに一意の ID を与えるのが慣習です。ただし、コンポーネントへの参照を変数に格納することもできます。それは本当にあなたが何をしているかに依存します。コントローラーが一連の動的要素を構築している場合、コントローラー内のそれらの要素への参照を保持することは理にかなっています。

  2. ビューは通常、MVC アプローチの下で独自のファイルで定義されます。基本的に、これは構成を含む Ext.define ブロックです。Sencha サイトに MVC アプリケーションのサンプルがいくつかあります。それらを参照することをお勧めします。

  3. これは本当にあなたが何をしているかに依存します。複数の連絡先ビューがある場合、単一のストアを複数のビューで参照することは理にかなっているかもしれませんが、一般的に、ストアは特定のデータのコレクションを表します。本、連絡先、または従業員のように。したがって、ビューで Books と Employees を表示する必要がある場合は、ビューでこれらの店舗を参照するのが理にかなっています。

あなたが求めていることの核心は、動的ビューのロジックをどこにカプセル化するかだと思います。表示ロジックをカプセル化する再利用可能なビュー コンポーネントを作成し、コントローラーにこれらのコンポーネントを作成させて、それらにデータを入力することをお勧めします。これにより、懸念事項を柔軟に分離できます。

ExtJS とその MVC の実装を始めたばかりの場合は、Sencha Architect を試してみることを強くお勧めします。これを使って実際のプロジェクトを構築するつもりはありませんが、簡単な小さなデモ アプリをまとめるには最適で、MVC 構造を生成してくれます。Sencha サイトのデモ アプリケーションを見てみましょう。

于 2013-05-06T14:30:54.340 に答える