[英]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.