Sencha Touch:克隆记录

Sencha Touch: clone record

我想克隆一个 Sencha Touch 2.3 模型实例(也称为 "record")。克隆的 id 应与旧的相同,但不应附加到任何商店。在 ExtJS4 中,我将执行以下操作并且它会起作用:

var newRecord = record.copy();

这在 Sencha Touch 中不起作用。根据 ST2 文档,新记录在 copy() 上获得新生成的 ID。所以我尝试了:

var newRecord = record.copy(record.getId());

所以现在我应该有一个具有相同 ID 的新副本。

newRecord.getId()==record.getId(); // returns true

我接着修改记录:

newRecord.set("myCount",newRecord.get("myCount")+1);

猜猜接下来会发生什么?我检查记录确实不同:

newRecord.get("myCount")!=record.get("myCount"); // returns false

所以,当我修改"copy"的时候,我也修改了原来的,也就是说没有创建副本。

我哪里做错了,我哪里看错了 Sencha Touch 文档?

如果您传递与记录相同的 ID,

record.copy(id) 将 return 引用现有记录。

var newRecord = record.copy() 将创建记录的另一个实例,因此它将具有不同的 ID,但不会附加到当前商店。您可以如图所示验证:

record.stores  //Returns store reference in array
newRecord.stores //Returns [] indicating no store refeerences

如果你想这样,你可以复制记录并将新记录的id设置为原始记录的id。

var newRecord = record.copy()
newRecord .set('id',record.getId()) //newRecord.getId() returns same as record.getId()