2

我有一个后端,它通过 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('')              
}
});
4

2 回答 2

1

反而

 e.data.myField = "constantPrefix" + e.data.myField;

利用

var value = "constantPrefix" + e.get('myField');
e.set('myField', value);

model.set()负责触发数据视图确实捕获的必要事件。

干杯,奥列格

于 2012-08-31T09:24:27.913 回答
0

您只需要通知商店侦听器有关修改的字段。尝试:

Ext.getStore('MyStore').afterEdit(e, ['myField']);

这样做的好处是,数据视图或网格现在将显示已修改的字段(字段中有这些红色三角形)。

于 2014-08-20T17:47:34.757 回答