我創建了一個與Ext.Template捆綁在一起的面板。此面板包含在另一個面板中,該面板的使用壽命已縮短。Force Ext爲隱藏(摺疊)面板創建body元素
id: 'myPanel',
title: 'My Title',
layout: 'border',
collapsible: true,
collapsed: true,
hideCollapseTool:true,
bodyBorder: false,
height: 300,
bodyStyle: 'background:#F9F9F9;',
items: [{
id: 'myDisplayPanel',
bodyStyle: 'background:transparent;',
width: 300,
border: false,
margins: '5 5 5 5',
region: 'west',
tpl: new Ext.Template([
'some template'
])
},
{
id: 'myForm',
xtype: 'form',
bodyStyle: 'background:transparent;',
border: false,
margins: '5 5 5 5',
region: 'center',
[...]
這個模板面板應該被更新爲鄰近網格中的行選擇結果。但我第一次打電話.update(數據)時出錯。在myDisplayPanel上,因爲它不包含body元素。
myGridSelectionModel: new Ext.grid.RowSelectionModel({
singleselect: true,
listeners: {
rowselect: function(sm,rowIdx,r) {
Ext.getCmp('myDisplayPanel').update(r.data);
Ext.getCmp('myPanel').expand(true);
}
}
}),
到myDisplayPanel.update()的調用導致出錯時分機嘗試與myDisplayPanel.body調用template.overwrite函數作爲第一個參數。
function(b,a,c){b=Ext.getDom(b);b.innerHTML=this.applyTemplate(a);
是否有可能以某種方式迫使Ext在它顯示的beeing之前爲這個隱藏面板生成一個body元素?我試圖在更新它之前擴展該元素,但現在已經有效...
是的,我注意到了這個設置,但不幸的是它對我來說並不適用於某些原因不明的原因。我完全放棄了這個面板的崩潰方法,但我會接受你的答案,理論上它應該解決這類問題。 – 2010-08-16 06:07:40
對不起,這不適合你。如果你想進一步挖掘,我通常通過在螢火蟲的更新行上設置一個斷點來調試這類事情,然後使用控制檯/手錶瀏覽Ext.getCmp('myDisplayPanel'),檢查渲染和el屬性它和它的所有者Ct鏈。最後呈現的父級和/或尚未呈現的頂級父級是開始調試以查看未發生預期佈局的原因的好地方。佈局可能會變得棘手,特別是如果它們很複雜並且嵌套。 – 2010-08-16 12:36:28