Extjs關於tabpanel的 bug修改
這篇文章主要是講 deferredRender 這個屬性的。
bug描述:第一次進入頁面之後沒有問題,但是Tab來回切換之後每個items裏的Panel就不加載了。
經過修改,問題找到。源代碼如下:
Ext.onReady(function(){
Ext.QuickTips.init();
var
tabs2=new Ext.TabPanel(
{renderTo:main,
activeTab:0,
activeTab:1,
plain:true,
defaults:{autoHeight:true},
items:[
new
Ext.Panel(formDetail),
new
Ext.Panel(formHandle),
new
Ext.Panel(transcribeReply),
new
Ext.Panel(waitingUserList),
new
Ext.Panel(subFormList),
new
Ext.Panel(prtFormList),
new
Ext.Panel(attachmentList)
]
}
);
}
);
我在plain:true,之後 deferredRender:false,問題迎刃而解。
在創建Ext.TabPanel時deferredRender配置項經常會被忽略。該配置項的默認值是true。true表示只有在用戶第一次訪問選項卡時,該選項卡的panel纔會被渲染。
所以當我們有可能使用腳本操作選項卡時,謹記將該配置項設置爲false。
在FormPanel中使用TabPanel,如果在TabPanel中不定義deferredRender的值爲false,那麼,當你使用Load方法爲Form加載數據,或使用setValue爲沒有激活過的Panel的控件賦值時,將會發生錯誤。
原因是,在默認設置下deferredRender爲true,TabPanel並不會渲染所有Panel上的控件,只有在該Panel被激活時才渲染控件,所以當你爲這些控件設置數據時,將會找不到這些控件,會出現錯誤。
因而,在FormPanel中使用TabPanel,一定要在TabPanel中設置deferredRender的值爲false,強制TabPanel在Layout渲染時同時渲染所有Panel上的控件。
額外福利:
Ext.QuickTips.init();
這一行代碼的意義:QuickTips的作用是讀取標籤中的ext:qtip屬性,併爲它賦予顯示提示的動作。
renderTo 與
applyTo的區別:applyTo是將組件加在了指定元素之後,而renderTo則是加在指定元素之內
plain:true
一種使用簡單的純色樣式,主要應用於Window樣式上,此時只要此項的baseCls設置爲x-plain,就可以達到純色效果
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.