2014-09-13 2 views
1

인스턴스화 할 모델이 기존 모델의 파생 유형이라는 가정하에 기존 모델에서 백본 모델을 인스턴스화하는 기본 방법은 무엇입니까?백본의 기존 모델에서 모델 인스턴스화

중첩 모델을 다룰 때 유의해야 할 경우가 있습니다. 예를 들어 DeepModel을 사용하고 있으며 this.get("childModel")을 반환하는 "상위"모델에서 함수를 정의한다고 가정 해 보겠습니다. 이제 자식 모델은 Backbone.Model 유형이 될 가능성이 있지만 Backbone.Model을 확장하는 ChildModel 유형이되고 싶습니다. 저는 문자 그대로 한 번에 하나씩 재미있는 속성을 복사함으로써 이것을 해왔습니다. 확실히 더 좋은 방법이 있어야합니다.

답변

2

Backbone.Model#clone() 메서드를 사용하거나 new model.constructor()을 사용하여 동일한 모델의 새 인스턴스를 만들 수 있습니다. 우리가 clone 방법의 소스를 참조하면

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

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

var new_child = child.clone(); 

:

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

우리는 내가 필요 정확히 무엇을 우리의 데이터

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

을 함께 새로운 인스턴스하지만를 만들기 위해 같은 방법을 사용할 수 있습니다, 감사합니다 . –