2014-09-13 73 views
1

假設要實例化的模型是現有模型的派生類型,那麼從現有模型中實例化Backbone模型的首選方式是什麼?Backbone中現有模型的實例化模型

我想到的情況是在處理嵌套模型時出現的。例如,假設我正在使用DeepModel,並且在我的「父級」模型上定義了一個返回this.get("childModel")的函數。現在孩子模型可能是Backbone.Model類型,但我希望它是ChildModel類型,它擴展了Backbone.Model。我一直在通過逐字複製一個有趣的屬性來做到這一點。當然,必須有更好的方法...

回答

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" }); 
+0

正是我需要的,謝謝。 – 2014-09-13 07:41:59