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()してストアを呼び出すと、必要ないのに full_name と age を含むすべてのフィールドがサーバーに送信されます。

サーバー上のそのデータを無視できることはわかっていますが、場合によっては(たとえば、「変換」を含むフィールドがたくさんある場合)、ペイロードに多くの不要なオーバーヘッドが追加されます。

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 に答える