extjs 3.x多个实例

Ami*_*rma 1 javascript extjs extjs3

// Using extjs 3.x  
var box = new Ext.Textfield { /* textField configuration */ }; 
var form = new Ext.FormPanel{
    /* formPanel configuration */
    items:[box]
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我想创建多个实例,box以便当我创建多个form我不腐败的实例时,我box也不想使用数组.请建议一种更好的方法来创建和管理多个实例Ext.Component

Bri*_*kau 5

@ Mchl的答案是制作可重用组件的好方法,尤其是当您需要覆盖或向现有组件添加新行为时.如果您只需要重用一些配置设置而不再需要,您还可以做一些更简单的事情:

cfg = {
   xtype: 'textfield',
   width: 100,
   maxLength: 10
}

new Ext.FormPanel({
    items: [cfg, cfg]
});
Run Code Online (Sandbox Code Playgroud)

如果您需要添加特定于实例的配置字段(例如id),您只需传入您的唯一值并将默认cfg添加到它们(applyIf不会覆盖现有属性,它只会添加属性):

new Ext.FormPanel({
    items: [
        Ext.applyIf({id:'foo'}, cfg),
        Ext.applyIf({id:'bar'}, cfg)
    ]
});
Run Code Online (Sandbox Code Playgroud)

我要添加到@ Mchl的答案的一件事是,如果你要努力创建自己的类,请确保给它一个自定义的xtype.这样,即使使用自己的自定义组件,您仍然可以利用Ext的惰性实例化功能,而不必在初始时创建所有内容的实例.