Избегайте синхронизации определенных частей модели - PullRequest
1 голос
/ 06 октября 2011

Допустим, у меня есть модель 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, даже если я этого не хочу.

Я знаю, что могу просто игнорировать эти данные на сервере, но в некоторых случаях (например, с большим количеством полей с 'convert') это добавляет много ненужных служебных данных в полезную нагрузку.

1 Ответ

4 голосов
/ 06 октября 2011

Вы пытались настроить 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');
}

Надеюсь, это поможет

...