2011-08-09 140 views
1

這種崩潰:爲什麼Ext.grid.Panel會崩潰?

var grdMakes = Ext.extend(Ext.grid.Panel, { 
    constructor: function(paConfig) { 
    } 
} 

這不:

var grdMakes = Ext.extend(Ext.grid.Panel, { 
} 

崩潰是:

Uncaught TypeError: Cannot read property 'added' of undefined 

爲什麼添加一個構造函數導致崩潰?我可以像其他對象做到這一點:

var pnlMakesMaint = Ext.extend(Ext.Panel, { 
    constructor: function(paConfig) { 
    } 
} // just fine 

編輯

爲了澄清我想要做的是,我希望能夠實例化一個對象通過覆蓋默認的選項。

var g = new grdMakes({}); // defaults used 

var g = new grdMakes({renderTo: Ext.getBody()}); // renderTo overridden 

這是工作以外的所有Ext.grid.Panel

而且,我使用ExtJS 4

SOLUTION

事實證明,延長在ExtJS的4.過時所以我用這和它的工作原理:

Ext.define('grdMakes', { 
    extend: 'Ext.grid.Panel', 

    constructor: function(paConfig) { 
     var paConfig = Ext.apply(paConfig || {}, { 
      columns: !paConfig.columns ? [{ 
       header: 'Makes', 
       dataIndex: 'make' 
      }, { 
       header: 'Description', 
       dataIndex: 'description' 
      }]: paConfig.columns, 
      height:  !paConfig.height ? 400 : paConfig.height, 
      renderTo: !paConfig.renderTo ? Ext.getBody() : paConfig.renderTo, 
      store:  !paConfig.store ? stoMakes : paConfig.store, 
      title:  !paConfig.title ? 'Makes' : paConfig.title, 
      width:  !paConfig.width ? 600 : paConfig.width 

     }); 

     grdMakes.superclass.constructor.call(this, paConfig); 
    } 
} 
+0

而不是Ext.extemd你可以嘗試Ext.override.And我的懷疑是你想要做的構造嗎?我的意思是你想重寫基礎構造函數,否則你需要使用它像方法? – Unknown

+0

同樣的錯誤。我只想做一些事情:'var g = new grdMakes({});'或者,能夠:'var g = new grdMakes({renderTo:Ext.getBody()})'並覆蓋默認 – cbmeeks

+0

你在ExtJS3或4中試試這個嗎? – Unknown

回答

2

Ok.But你的代碼看起來像ExtJS3.Because Ext.extend在ExtJS4 version.Instead depreceated的擴展,你可以使用define.For引用您可以檢查以下網址:

http://docs.sencha.com/ext-js/4-0/#/api/Ext-method-extend

據我所知,對於覆蓋默認選項,這不是完美的方式。您需要使用Ext.override。

例如:

Ext.override(Ext.grid.Panel,{ 
    lockable : true 
}); 

和上面一樣,你必須覆蓋默認選項。

+0

呃。好的,我想知道這件事。我們在這裏繼承了一些遺留的東西。有一個我可以用於定義的例子嗎? – cbmeeks

+0

你可以在這裏檢查定義的工作http://docs.sencha.com/ext-js/4-0/#/api/Ext-method-define – Unknown

+0

謝謝!我給你的答案是指引我朝着正確的方向發展。我會用我的解決方案更新我的問題。 – cbmeeks