从Backbone中的现有模型实例化模型

时间:2014-09-13 05:32:02

标签: javascript backbone.js backbone-model

假设要实例化的模型是现有模型的派生类型,从现有模型实例化Backbone模型的首选方法是什么?

在处理嵌套模型时,我想到的情况就出现了。例如,让我们说我正在使用DeepModel并在我的父母"上定义一个函数。返回this.get("childModel")的模型。现在,子模型可能属于Backbone.Model类型,但我希望它类型为ChildModel,它扩展了Backbone.Model。我一直在通过逐个复制有趣的属性来做到这一点。肯定有一个更好的方法......

1 个答案:

答案 0 :(得分:2)

您可以使用Backbone.Model#clone()方法或仅使用new model.constructor()创建同一模型的新实例。

var ChildModel = Backbone.Model.extend({
    ...
});

var child = new ChildModel({ key: "value" });

var new_child = child.clone();

如果我们看到clone方法的来源:

clone: function() {
    return new this.constructor(this.attributes);
},

我们可以使用相同的方法创建新实例,但使用我们的数据

var new_child = new child.constructor({ new_key: "new_value" });