6

まず、Ext.Define()とExt.Create()の違いを知りたいのですが、正しい使い方を知りたいです。

コードと多くのExtjs4MVCチュートリアルを確認しました。

そして、Extjs4 MVCプロジェクトで多くのExt.define()メソッドを見つけました。

Ext.define()メソッドがオブジェクト(CLASS)を作成することを理解しています。

また、たとえばパネルが必要な場合は、パネルを継承しません。また、初期化後にパネルを再利用しません。

次に、Ext.define()の代わりにExt.create()を使用する必要があると思います。

だから、私は自分のコードを変更しようとしています@。@;

見て、それは

Ext.Define("App.view.MyGrid",{
    extend : 'Ext.grid.panel',
    alias : 'widget.MyGrid',
    initComponent : function(){
        this.columns : [{ header: 'column' }];
        this.store : Ext.create('Ext.data.ArrayStore', {})
    }
});

そして私はに変わります、

var myGrid = Ext.create('Ext.grid.Panel', {
    layout: 'fit',
    border: false,
    columns: [{ header: 'column' }],
    store: Ext.create('Ext.data.ArrayStore', {})
});

コードを変更した後、コントローラーでパネルを取得(grep)できないという問題が発生しました。

私が前にこのようにする前に、

refs: [
        {
            ref: 'myGrid',
            selector: '',
            xtype: 'MyGrid', //view - alias
            autoCreate: true
        }
]

this.getMyGrid();

しかし、変更後、コントローラーでそのパネルを取得する方法がわかりません。

そして、それをgrepする方法を見つけるためにウェブを検索している間、私はただ疑問に思います' Ext.define()とExt.create()について私がどのように理解するかは正しいですか?そして、なぜ多くの人がExt.define()メソッドを使用しているのに、それを再度使用したり、継承したりしないのでしょうか。'

Extjsの基本を理解するために私にアドバイスしてください。

ありがとう!

4

1 に答える 1

6

私の2c:私は常にものを定義し、それを作成するだけです(2ライナーコンポーネントでない限り)。つまり、コンポーネントを他の場所でいつでも再利用でき、必要かどうかを考える必要もありません。

Ext.defineまた、コンポーネントの初期化/構築(コードの記述方法によって異なります)の代わりに、ページの読み込み時にエラーが発生します。これにより、少なくとも私にとってはデバッグが容易になります。

また、Ext.define実際には高速であるように見えますが、これは大きな問題です。http://jsperf.com/extjs-create-vs-define-create

Ext.defineまた、アーキテクチャを単純化する傾向があります(コンポーネントが何と呼ばれるかを考える必要があり、オートローダーのファイル名に役立ちます(ちなみにExt.define http://docsを使用するもう1つの理由です)。 sencha.com/ext-js/4-1/#!/api/Ext.Loader

Ext.define、キーワードを使用すると、sdk( http://www.sencha.com/products/sdk-tools/requires )を介してsenchaパッケージのカスタムビルドを作成することもできます-これがExtJS4で使用されているかどうかはわかりませんただし、または連絡先のみ。

その美徳を歌ったので、それは確かにファイルの量の間のトレードオフです、それはそれ自身の複雑さです。

于 2012-08-10T08:45:21.993 に答える