1

假设我有一个像这样的 Sencha Touch 模型:

Ext.regModel('User', {
    'fields': [{
        'name': 'first_name',
        'type': 'string'
     }, {
        'name': 'last_name',
        'type': 'string'
     }, {
        'name': 'full_name',
        'type': 'string',
        'convert': function(v, record) {
            return record.data.first_name + ' ' + record.data.last_name;
        }
     }, {
        'name': 'age',
        'type': 'integer'
     }
]});

服务器在获取记录时返回“first_name”、“last_name”和“age”字段。但是,当我更新用户的名字和/或姓氏并调用sync()商店时,它会将所有字段发送到服务器,包括全名和年龄,即使我不希望这样。

我知道我可以忽略服务器上的数据,但在某些情况下(例如,有很多带有“转换”的字段)它会给有效负载增加很多不必要的开销。

4

1 回答 1

4

您是否尝试过persist: false该字段的配置?

编辑我想您可以为代理创建自己的编写器并覆盖该getRecordData方法。

Ext.define('Ext.ux.NewWriter', {
    extend: 'Ext.data.Writer',
    getRecordData: function(record) {
        return {
            first_name: record.data.first_name,
            last_name: record.data.last_name,
            age: record.data.age
        };
    }
});

...
proxy: {
    writer: Ext.create('Ext.ux.NewWriter');
}

希望能帮助到你

于 2011-10-06T08:41:50.430 回答