2011-08-04 14 views
1

1再利用可能なグリッドを定義するために次のコードを使用します。 しかし、インスタンスを作成するときには、クラス定義の設定のいずれもブレークコードの影響を受けません。理由は何ですか? 3-クラス設定宣言に制限はありますか? 2グリッドクラスでいくつかのデフォルト列を作成し、そのオブジェクトにいくつかの列を追加する方法はありますか? おかげ再利用可能なコンポーネントを定義する

Ext.define("IBS.users.Grid", { 
    extend: "Ext.grid.Panel", 
    config:{ 
     selType:'checkboxmodel',  //not work 
     dockedItems:[/* items */],  //break 
     multiSelect:true, 
     features: [ 
      { 
       groupHeaderTpl: '{name}', 
       ftype: 'groupingsummary' 
      }, 
      { 
       ftype:'filters', 
       encode: false, // json encode the filter query 
       local: true 
      } 
     ], 

     viewConfig: {  //not work 
      stripeRows: true, 
      filterable:true, 
      loadMask: false 
     }, 
     listeners : { 
      itemdblclick: function(dv, record, item, index, e) { 
       console.log(arguments); 
      } 
     } 
    }, 
    constructor:function(config) { 
     this.callParent(arguments); 
     this.initConfig(config); 
    //  this.self.instanceCount++; 
    } 
}); 

答えて

0

1-Iは、再利用可能なグリッドを定義するには、次のコードを使用しますが、私はインスタンスを作るとき、クラス定義にはconfigが、コードを破るの効果がありませんどちらか。理由は何ですか?

あなたの設定が効果を発揮しない理由を答えることができます。偽造者に渡されているconfigデフォルト設定ではないためです。あなたのデフォルトの設定は、デフォルトの設定が効果を持つようにするために適用する必要があります。dockedItems:[/* items */]コードを壊す理由しかし、私は知らない

constructor:function(config) { 
    config = Ext.applyIf(config, this.config); 
    this.callParent(arguments); 
    this.initConfig(config); 
} 

。たぶん/* items */のどこかに構文エラーまたは論理エラーがあります。

2グリッドクラスでいくつかのデフォルト列を作成し、そのオブジェクトにいくつかの列を追加する方法はありますか。

これは簡単です。ちょうどあなたのinitComponent関数をオーバーライド:クラスの設定宣言のいずれかの制限が

Ext.define("IBS.users.Grid", { 
    extend: "Ext.grid.Panel", 
    // ... 
    initComponent : function(){ 
    if (!this.columns) { 
     // default columns: 
     this.columns = [{ 
     dataIndex: 'dkjgkjd', 
     // ... 
     }]; 
     // if we passed extraColumns config 
     if (this.extraColumns) 
     for (var i=0; i < this.extraColumns.length; i++) 
      this.columns.push(this.extraColumns[i]); 
    } 

    this.callParent(arguments); 
    }, 
    // ... 
}); 

、3-ありますか?

私は気づいていません。しかし、オブジェクトの設定をクラス定義で宣言することはお勧めしません。例:

Ext.define("IBS.users.Grid", { 
    extend: "Ext.grid.Panel", 
    bbar: Ext.create('Ext.toolbar.Toolbar', // ... 
    // ... 
}); 

クラスの最初のインスタンスでは問題ありません。しかし、2番目のインスタンスを作成すると、bbarは最初のインスタンスと同じオブジェクトを参照します。したがって、bbarは最初のグリッドから消えます。
代わりにオブジェクト設定をinitComponentに宣言してください。

+0

分子、お返事ありがとうございます。 私はinitComponentを使用してクラス定義でオブジェクト設定を宣言していますか? – PHPst

+0

@Reza、 'this.neededConfig = {/ *あなたのオブジェクトはここにあります* /};'私の答えでは 'columns'のように表示されます。 –

関連する問題