2013-10-10 67 views
1

我定義了一個面板有2個項目看起來像http://jsfiddle.net/BB8Vu/Extjs4.1 - 如何讓項目繼承其父佈局

Ext.define('Example', { 
    extend: 'Ext.panel.Panel', 
    border: false, 
    alias: 'widget.example', 
    items: [{ 
     fieldLabel: 'Age', 
     name: 'age', 
     xtype: 'numberfield', 
     minValue: 0, 
     maxValue: 100 
    }, { 
     xtype: 'timefield', 
     fieldLabel: 'Time', 
     name: 'time', 
     minValue: '8:00am', 
     maxValue: '6:00pm' 
    }] 
}); 

而我使用的是另一種形式。如果該表單沒有佈局,那麼這是正確的。但是,如果我(在example不繼承父佈局項目的寬度)使用佈局像

Ext.create('Ext.form.Panel', { 
    title: 'Simple Form', 
    bodyPadding: 5, 
    width: 350, 
    url: 'save-form.php', 

    layout: 'anchor', 
    defaults: { 
     anchor: '100%' 
    }, 


    defaultType: 'textfield', 
    items: [{ 
     fieldLabel: 'First Name', 
     name: 'first', 
     allowBlank: false 
    },{ 
     xtype: 'example' 
    }], 
    renderTo: Ext.getBody() 
}); 

這是失敗的樣子

enter image description here

如何使example繼承父佈局的項目。由於

回答

3

擴展默認:

defaults: { 
    anchor: '100%', 
    layout: 'anchor', 
    defaults: {anchor: '100%'} 
}, 

看到你updated JSFiddle

注意一個佈局配置只得到一個容器上進行處理,而不是 一個組成部分,因爲一個分量不有孩子

+0

是改變的最好方法嗎?或更改'Ext.define('Example',{'更好? – freestyle

+0

@freestyle)當你插入某些東西作爲子類時,你不能繼承它,你只能提供默認值給子類,注意繼承是定義的,默認是實例。 'Example'是一個可以包含(插入到容器中)的類定義,也可以不包含(呈現給dom節點)。現在我建議你從ownerCt中讀取佈局是一個),儘管有可能它不是你應該設計類的方式。在你的情況下,佈局是由實現定義的,所以讓實現來處理它。 – sra