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がmyDisplayPanel.bodyを最初のパラメーターとしてtemplate.overwrite関数を呼び出そうとすると、エラーが発生します。
function(b,a,c){b=Ext.getDom(b);b.innerHTML=this.applyTemplate(a);
ビーイングが表示される前に、Extにこの非表示のパネルのボディ要素を生成させることはどういうわけか可能ですか?更新する前に要素を展開しようとしましたが、これで効果があります...