この質問は数年前のものですが、このような状況に対処するために現在使用しているトリックを次に示します。XTemplatesが許可する「逐語的」ブロックを利用します。これらを使用すると、XTemplateをでラップすることにより、XTemplate内で任意のコードを実行できます{% ... %}
。これらのコードブロック内でthis
は、XTemplate自体に設定されています。XTemplateには、owner
この場合、プラグイン自体を参照するプロパティRowExpander
があり、プラグイン自体にはgrid
、グリッドを参照するプロパティがあります。したがって、このようなものを使用すると、に渡される値に任意のデータを追加できますrowBodyTpl
。
Ext.create('Ext.grid.Panel', {
...
injectRowBodyData: function(values) {
values.MyInjectedContent = "Here's some extra data!";
},
plugins: [
{
ptype: 'rowexpander',
rowBodyTpl: [
'{% this.owner.grid.injectRowBodyData(value); %}',
'<div>',
'<h1>{Title}</h1>',
'<p>{Content}</p>,
'<p>{MyInjectedContent}</p>',
'</div>'
]
}
]
});
うまくいけば、Senchaはプラグインを修正して、将来これを処理する方法を提供するでしょう。しかし今のところ、これはうまく機能します。これをv4.2.1.883でテストしましたが、これは以前のバージョンのExt 4で機能するはずです。これは、将来的に機能しなくなる可能性があると考えられる唯一のことは、XTemplateのowner
プロパティがプラグインをポイントしなくなったことです。または、プラグインにその grid
プロパティを持つグリッドへの参照がありません。