假设要实例化的模型是现有模型的派生类型,从现有模型实例化Backbone模型的首选方法是什么?
在处理嵌套模型时,我想到的情况就出现了。例如,让我们说我正在使用DeepModel
并在我的父母"上定义一个函数。返回this.get("childModel")
的模型。现在,子模型可能属于Backbone.Model
类型,但我希望它类型为ChildModel
,它扩展了Backbone.Model
。我一直在通过逐个复制有趣的属性来做到这一点。肯定有一个更好的方法......
答案 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" });