javascript - Sencha 触摸 : clone record

标签 javascript extjs sencha-touch sencha-touch-2

我想克隆 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()

关于javascript - Sencha 触摸 : clone record,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29778077/

相关文章:

javascript - OverCls 在 IE11 中不起作用

javascript - 移动应用程序中的 PDF.JS Access-Control-Allow-Origin 问题

javascript - 取消表格中一列的onclick事件

javascript - jQuery 在按钮单击时获取最接近的表单

javascript - 在 JavaScript 中动态添加新按钮

javascript - 数据 View 滚动问题 sencha touch

events - Sencha 2 : Listeners on a panel not working

javascript - Backbone.js 使用 url 中的数据设置模型

extjs - 如何在 Extjs TabPanel 的选项卡中添加工具?

javascript - 如何使用包含数组的 JSON 对象填充 ExtJS 组合框?