1

I am trying to copy a model from a backbone collection to another but problem is that only reference is being copies, that is if I change value of model in one collection the value is automatically changed for other collection. The problem is how do I make an exact copy of model object.

Thanks

4

4 回答 4

1

我已经尝试了所有的克隆方法,但结果并不好,因为克隆模型的 cid 变得相同,这导致了问题。所以我应用了这个方法

var widget = this.widgetsCollection.get(widgetId)
var newWidget=new Widget(widget.attributes);

这给出了具有不同 cid 的副本。

在此处输入图像描述

于 2013-05-30T15:29:15.770 回答
0

尝试创建一个深拷贝,这将创建一个具有相同值的新对象实例。

可以在这个 SO 线程中找到一个示例:在 JavaScript 中深度克隆对象的最有效方法是什么?

于 2013-05-30T15:17:03.377 回答
0

Backbone Model 中还存在一个方法克隆,它创建具有相同属性的新副本

this.widgetsActiveCollection.add(widget.clone());
于 2013-05-31T10:29:57.527 回答
0

这就是我创建模型的深层副本的方式

var newModel = new createModel(JSON.parse(JSON.stringify(oldModel)));
newCollection.add(newModel );
于 2015-09-30T09:45:20.407 回答