バージョン 4.1.1 から 4.2.1 への切り替えに取り組んでおり、最終的に最後のバグを修正する必要があります。次のように、単純な (?) Ext.XTemplate によってオーバーライドされたビューを持つグリッドビューがあります。
Ext.define('view.monitoring.Event',
{
extend: 'Ext.view.View',
alias: 'widget.default_monitoring_event',
itemSelector: '.monitoring-thumb-fumb',
tplWriteMode: 'overwrite',
autoWidth: true,
initComponent: function()
{
var tplPart1 = new Ext.XTemplate('<SOME HTML 1>');
var tplPart2 = new Ext.XTemplate('<SOME HTML 2>');
var tplPart3 = new Ext.XTemplate('<SOME HTML 3>');
var tplPart4 = new Ext.XTemplate('<SOME HTML 4>');
this.tpl = new Ext.Template('<BUNCH OF HTML AND TPL and TPL INSIDE TPL',
callFunc1: function(data) { /* do something with tplPart1 */ },
callFunc2: function(data) { /* do something with tplPart2 */ },
callFunc3: function(data) { /* do something with tplPart3 */ },
callFunc4: function(data) { /* do something with tplPart4 */ },
);
this.callParent(arguments;
}
}
このビューは、次の方法でグリッドに設定されます。
Ext.define('view.monitoring.WeeklyOverview',
{
extend: 'Ext.grid.Panel',
alias: 'widget.default_monitoring_weeklyoverview',
layout: 'border',
title: Lang.translate('event_monitoring_title'),
overflowX: 'hidden',
overflowY: 'auto',
initComponent: function()
{
//...
this.view = Ext.widget('default_monitoring_event', {
store: Ext.create('store.monitoring.Rows')
});
//...
}
}
次に、コントローラーonRender
でストアに値が入力されます (グリッドのストアは AJAX であり、データをロードしてビューのメモリ ストアに渡します)。ExtJS 4.1.1 では、これは正しく機能しており、データが読み込まれ、テンプレートが解析され、データを含む HTML が表示されます。
しかし、4.2.1 に切り替えた後、HTML はデータで満たされなくなり、何も表示されず、空の HTML テーブルが表示されます (何もレンダリングされないように見えます)。HTML の少なくとも一部はあるがデータがないため、テンプレートに適用されているデータに問題がある可能性があります。
何が間違っているか知っていますか?
更新:デバッグとカスタム ビュー テンプレートの簡略化の後、カスタム ビューでさえ、返されたデータの独自のルートを持つ独自のストアを設定していることがわかりました。その設定は無視され、Ext.grid.Panel
コンポーネントのストアのデータをロードするだけです。AJAX 応答は次のようになります。
{
user: {},
data: [
0: { ... },
1: { ... },
...
],
rows: [
0: { ... },
1: { ... },
...
]
}
ここでをコンポーネントdata
に使用し、カスタム ビュー ( で構成) によって を設定する必要があります。子ビューの場合、常に親のストアのルート要素が返されるようです。この動作を回避し、独自のストアを使用するようにカスタム ビューを作成する方法はありますか?Ext.grid.Panel
rows
Ext.XTemplate