2011-08-09 234 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