2014-09-13 2 views
1

Каков предпочтительный способ создания модели базовой модели из существующей модели, если предположить, что модель, которая будет создана, имеет производный тип существующей модели?Мгновентировать модель из существующей модели в базовой схеме

Случай, который я имею в виду, возникает при работе с вложенными моделями. Например, допустим, я использую 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

Именно то, что мне нужно, спасибо , –

Смежные вопросы