Я создал панель в комплекте с Ext.Template. Эта панель содержится в другой панели, которая начинает свою жизнь свернутой.
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(data); на 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() вызывает ошибку, когда Ext пытается вызвать функцию template.overwrite с myDisplayPanel.body в качестве первого параметра.
function(b,a,c){b=Ext.getDom(b);b.innerHTML=this.applyTemplate(a);
Можно ли как-то заставить Ext генерировать элемент тела для этой скрытой панели до того, как она будет показана? Я пытался расширить элемент перед его обновлением, но теперь это действует...