データストアがajaxプロキシを介して使用するJSONデータを返すバックエンドがあります。その後、データはデータビューに表示されます。私がする必要があるのは、データビューに表示される前に、クライアント側で受信したデータに対して何らかの変換を実行することです。
load
私はさまざまなアプローチを試し、データストアのイベントにハンドラーをアタッチすることに決めました。
Ext.getStore('MyStore').on('load', function (store, records, successful, operation, eOpts) {
for (var i = 0; i < records.length; i++) {
var e = records[i];
e.data.myField = "constantPrefix" + e.data.myField;
}
});
ハンドラーが起動し、レコードが正しく変更されます。
問題は、データビューに変更されていないデータが表示されることです。全体のアプローチは正しいですか?もしそうなら、なぜそれが機能しないのですか。そうでない場合-どのようにそれを達成しますか?
以下はデータビューコードです。
Ext.define('MyProject.view.MyDataView', {
extend : 'Ext.DataView',
xtype : 'my-dataview',
config : {
store : 'MyStore',
baseCls : Ext.os.deviceType === 'Phone' ? 'my-dataview-phone' : 'my-dataview-tablet',
mode: 'MULTI',
allowDeselect: true,
selectedCls: 'tick-visible',
triggerEvent: 'itemdoubletap',
itemTpl : [
'<img class="my-photo my-dataview-photo" src="',
'{myField}"></img>'
].join('')
}
});