假设我有一个这样的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()
时,它会将所有字段发送到服务器,包括full_name和age,即使我不想这样做。 / p>
我知道我可以忽略服务器上的数据,但在某些情况下(例如,有很多带'convert'的字段)会给有效负载增加许多不必要的开销。
答案 0 :(得分: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');
}
希望有所帮助