Ext中TablePanle只能獲取ActiveTab的對象

項目須要,將一個對象的各個部分分到各個Tab中顯示。可是經過Ext.getCom獲取Id的方式只能得到到tabpanle中的激活對象。html

var reviewSqlTabPanel = new Ext.TabPanel({
    activeTab:0,
    items:[
        {id:'sqlQuery',title:'XXX', html:''},
        {id:'sqlXml',title:'XXX', html:''},
        {id:'sqlExplain',title:'XXX', html:''}
    ]
});

Ext.getCmp('sqlXml').body.update('註釋:'+sqlComment+"<br>"+"XML:"+sqlXml);
Ext.getCmp('sqlQuery').body.update(sqlQuery);

即獲取sqlXml的時候報錯,原來tabpanle只有在active的時候纔會建立對應的dom對象,解決方案很簡單sql

var reviewSqlTabPanel = new Ext.TabPanel({
    activeTab:0,
    deferredRender:false,
    items:[
        {id:'sqlQuery',title:'XXX', html:''},
        {id:'sqlXml',title:'XXX', html:''},
        {id:'sqlExplain',title:'XXX', html:''}
    ]
});

參考:http://www.iteye.com/problems/56865dom

Internally, the TabPanel uses a Ext.layout.CardLayout to manage its tabs. This property will be passed on to the layout as its Ext.layout.CardLayout.deferredRender config value, determining whether or not each tab is rendered only when first accessed (defaults to true in ExtJs)(defaults to false in this control).

總結一下,activeTab的其餘tab若是須要提早渲染的時候須要加上deferrereRender爲false這個選項。this

相關文章
相關標籤/搜索