2012-07-30 47 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