TommyMaintz在Sencha Touch 2 Forums上回答了這個問題,但我也想在這裏給出答案。
「我認爲有一件事是錯誤的,那就是您正在使用record.data向LocalStore添加一條記錄,在ST2中我們現在有一個Model緩存,這意味着如果您創建兩個實例相同的模型和ID,第二次創建該實例時,它只會返回已存在的實例,這意味着如果您同步本地存儲,則它不會將該記錄識別爲「幻影」記錄,因爲它已經有一個ID 。如果你想通過使用所有的數據,但刪除ID來創建你的記錄的「複製」,你將不得不做的事情,這將產生一個新的簡單的ID,當你將它保存到本地存儲它會爲它生成一個合適的本地ID
當我嘗試這樣做時,我注意到M上的「複製」方法odel尚未更新以處理此問題。如果應用以下覆蓋,則應該可以執行localStore.add(record.copy()); localStore.sync()「
Ext.define('Ext.data.ModelCopyFix', {
override: 'Ext.data.Model',
/**
* Creates a copy (clone) of this Model instance.
*
* @param {String} id A new id. If you don't specify this a new id will be generated for you.
* To generate a phantom instance with a new id use:
*
* var rec = record.copy(); // clone the record with a new id
*
* @return {Ext.data.Model}
*/
copy: function(newId) {
var me = this,
idProperty = me.getIdProperty(),
raw = Ext.apply({}, me.raw),
data = Ext.apply({}, me.data);
delete raw[idProperty];
delete data[idProperty];
return new me.self(null, newId, raw, data);
}
});
來源
2012-02-10 14:39:55
M69
感謝您發佈此處。解決了同樣的問題。 – 2012-06-03 06:19:56