2011-10-06 81 views
1

的某些部分比方說,我有一個煎茶觸摸模式是這樣的:避免同步模型

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」,「姓氏」和「年齡」字段。但是,當我更新用戶的第一個和/或最後一個名稱,並且我在商店上呼叫sync()時,它會將所有字段發送到服務器,包括full_name和age,儘管我不想這樣做。

我知道我可以忽略服務器上的數據,但在某些情況下(例如有很多字段以'convert'爲例),它會爲有效負載增加許多不必要的開銷。

回答

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'); 
} 

希望它可以幫助

+0

它似乎沒有任何效果。此外,它沒有在[API文檔](http://dev.sencha.com/deploy/touch/docs/?class=Ext.DataView)中列出(雖然我找不到任何我可以使用的選項)。 –

+1

我正在查看extjs 4 :)的api,其中字段的配置持續存在..顯然不適用於sencha – nscrob

+1

哦,這實際上是個好消息:在某些時候,它將可用。在此期間,我會看看我是否可以將其恢復至Sencha Touch。 –