我有一个相当复杂的大型骨干模型,包含嵌套数组和对象。
如果我使用主干方法克隆,如下所示:
var model2 = model1.clone();
它将克隆顶级属性和数组,但根本不会克隆任何更深层次的内容。
例如,它会很好地克隆这些模型属性:
id:29832, 标题:极限游戏, 类型:“9a”, 用户:[0:“高级”,1:“精英”]
但是更复杂的属性被忽略,就像这样(这是我在
console.log
中看到的。在主干中,模型是游戏。:
games:
adventure:
models: Array(1)
0: child
attributes:
title: "PitFall"
year: "(old) 1981"
有没有克隆整个骨干模型的骨干方式?
谢谢!
backbone 是通过使用属性副本创建新实例来克隆的,因此只要属性在属性上,就应该安全地被克隆
来自骨干源代码
// Create a new model with identical attributes to this one.
clone: function() {
return new this.constructor(this.attributes);
},
可以使用
lodash
cloneDeep() 函数来实现此目的,例如,
const model2 = new Model(_.cloneDeep(model1.attributes));
cloneDeep()
有多种替代方案;根据您支持的角色库,可能已经有类似的作品可供您使用。