如何克隆整个骨干模型?

问题描述 投票:0回答:2

我有一个相当复杂的大型骨干模型,包含嵌套数组和对象。

如果我使用主干方法克隆,如下所示:

 var model2 = model1.clone();

它将克隆顶级属性和数组,但根本不会克隆任何更深层次的内容。

例如,它会很好地克隆这些模型属性:

id:29832, 标题:极限游戏, 类型:“9a”, 用户:[0:“高级”,1:“精英”]

但是更复杂的属性被忽略,就像这样(这是我在

console.log
中看到的。在主干中,模型是游戏。:

games: 
   adventure: 
      models: Array(1)
          0: child
             attributes:
                 title: "PitFall"
                 year: "(old) 1981"

有没有克隆整个骨干模型的骨干方式?

谢谢!

javascript backbone.js backbone-model
2个回答
2
投票

backbone 是通过使用属性副本创建新实例来克隆的,因此只要属性在属性上,就应该安全地被克隆

来自骨干源代码

// Create a new model with identical attributes to this one.
clone: function() {
   return new this.constructor(this.attributes);
},

0
投票

可以使用

lodash
cloneDeep() 函数来实现此目的,例如,

const model2 = new Model(_.cloneDeep(model1.attributes));

cloneDeep()
有多种替代方案;根据您支持的角色库,可能已经有类似的作品可供您使用。

© www.soinside.com 2019 - 2024. All rights reserved.