2012-07-30 57 views
1

嗨,我是想扩展形式,我可以使用附配产权喜欢这样commonItems延长物品..ExtJS的4延伸的形式

Ext.define('PC.view.FormEvento', { 
     extend:'Ext.form.Panel', 
     id:'FormEvento', 
     url:'controller/action', 
     bodyPadding:10, 
     commonItems:[ 
      { 
       xtype:'hiddenfield', 
       name:'id', 
       value:0 
      }, 
]}); 

..我将与推广的项目的形式结合像这样

Ext.define('PC.view.FormEventoExtended', { 
    extend:'PC.view.FormEvento', 
    id:'FormEventoExtended', 
    title:'Evento Extended', 

    initComponent:function() { 
     var me = this; 

     Ext.applyIf(me, { 
      items:me.commonItems.concat(
       [ 
        { 
         xtype:'textfield', 
         fieldLabel:'personal1', 
         name:'personal1' 
        }, 
        { 
         xtype:'textfield', 
         fieldLabel:'personal2', 
         name:'personal2' 
        } 
       ]) 
     }); 
     me.callParent(arguments); 
    } 
}); 

其中我将基本形式的commonItems连接到扩展形式的个人项目。有没有一种形式可以在Ext 4中使用本机?

回答

2

你可以简单地写这样的事情在PC.view.FormEvento构造:

initComponent: function() { 
    var me = this; 

    me.items.push({ 
     xtype:'hiddenfield', 
     name:'id', 
     value:0 
    }); 
    me.callParent(arguments); 
} 

这个构造函数将被调用的时候,对象将已经在子对象配置的项目。

+0

它使表格父母有孩子的项目... – 2012-07-31 22:20:32

3

我不知道这样做的任何原生的方式,但我更喜欢一个“最佳实践”的投入方法buildItems每类扩展组件,它会返回元素的数组的:

Ext.define('PC.view.FormEvento', { 
    extend: 'Ext.form.Panel', 
    id: 'FormEvento', 
    url: 'controller/action', 
    bodyPadding: 10, 

    initComponent: function() { 
     this.items = buildItems(); 

     this.callParent(arguments); 
    }, 

    buildItems: function() { 
     return [ 
      { 
       xtype: 'hiddenfield', 
       name: 'id', 
       value:0 
      }, 
     ]; 
    } 
]}); 

当从这个类扩展,改变项成为一个简单的作为覆盖buildItems方法,调用的父和添加或插入附加的项目:

Ext.define('PC.view.FormEventoExtended', { 
    extend: 'PC.view.FormEvento', 
    id: 'FormEventoExtended', 
    title: 'Evento Extended', 

    buildItems: function() { 
     var items = this.callParent(arguments); 

     return Ext.Array.push(items, [ 
      { 
       xtype:'textfield', 
       fieldLabel:'personal1', 
       name:'personal1' 
      }, 
      { 
       xtype:'textfield', 
       fieldLabel:'personal2', 
       name:'personal2' 
      } 
     ]); 
    } 
}); 

当项目数的增加,它使SENS e创建其他方法,例如buildFieldsetAddressItems。这带来的好处是你的项目列表保持更多的可读性,恕我直言。

+0

感谢您的伟大做法! – fen1ksss 2015-05-26 09:33:27