繁体   English   中英

Sencha Touch:克隆记录

[英]Sencha Touch: clone record

我想克隆一个Sencha Touch 2.3模型实例(也称为“记录”)。 该克隆应具有与旧克隆相同的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

因此,当我修改“副本”时,我也修改了原始副本,这意味着未创建任何副本。

我在做什么错,我在哪里误读了Sencha Touch文档?

如果传递与记录相同的ID,record.copy(id)将返回对现有记录的引用。

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

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

如果需要,您可以复制记录并将newRecord的ID设置为原始记录的ID。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM