我正在使用backbone.js在jquery中工作并遇到需要复制模型的情况,但我需要对它们进行深层复制,因此副本之间不存在引用.模型可以将其他模型作为属性.模型可以将anon函数作为属性.
所以我正在努力创建一种能够深度克隆大多数骨干模型的算法.我希望在这个副本期间应该删除所有绑定(对于新实例),所以我不担心试图保留它们.
目标:
我目前拥有的简化版本如下:
/**
* Performs a deep copy of a backbone.js model
* All bindings for the copy are lost
* @param orgModel - the original model to copy
*/
function deepCopyModel(orgModel)
{
var dupModel = Backbone.Model.extend({});
var orgAttributes= orgModel.toJSON();
var keepAttr=_.keys(orgAttributes);
//remove any special cases
keepAttr=_.without( keepAttr , 'specialCase1', 'specialCase2' );
//or keepAttr=_.difference(keepAttr, ['specialCase1', 'specialCase2'] );
//remove undefined values
keepAttr=_.filter(keepAttr,function(key) {
return ( typeof(attributes[key])!="undefined" );
});
//grab the resulting list of … 现在我有很多绑定到主干模型的UI元素.此模型包含客户信息,每次搜索新客户时都会更改模型,然后将其引入焦点.以前的客户模型被这个新模型覆盖.如果不是所有字段中的大多数字段都是相同的名称,则某些数组可能具有更多或更少的元素,但总体上几乎相同.
有没有办法可以用新的模型信息覆盖旧的模型信息,但保留我的UI元素的所有绑定?