2014-12-16 2 views
0

다음 백본 ​​모델을 사용했습니다.백본보기에 모델을 바인딩하는 모범 사례

var Credential = Backbone.Model.extend({ 

    defaults: { 
    user: null, 
    password: null 
    } 
}); 

이 모델을보기에 바인딩하고 싶습니다.

라우터에서 Credential 모델을 인스턴스화하고보기

var loginView = new LoginView({ model: new Credential() }); 

에 전달하거나 LoginViewinitialize 방법 모델을 인스턴스화하는 가장 좋은 방법은 그것입니다.

var LoginView = Backbone.View.extend({ 

    initialize: function() { 
     this.model = new Credential(); 
    } 
}); 

답변

3

모범 사례는 모델을 뷰에 할당하는 것이지 뷰가 모델을 생성하지 못하게하는 것입니다.

개념적으로보기는 동일한 모델 (예 : 양식 및 목록)을 나타내는 여러보기를 가질 수있는 경우 모델의 한 표현입니다.

일반적으로보기를 느슨하게 결합하고 모델을 할당하는 것이 더 좋은 패턴입니다.

1

수행 할 수있는 방법 중 하나가 있습니다. 아시다시피, 백본보기 MVC에서 컨트롤러 작업을 공유 할 수 있습니다. 따라서 Marionette.js 프레임 워크에서와 같이 독립적 인 추상화로 컨트롤러 책임을보기에서 분리 할 수 ​​있습니다. 이 경우 다음과 같은 워크 플로가 있습니다.

1) 컨트롤러는보기 및 모델 만들기 및 삭제, 모델 가져 오기,보기에 모델 제공 등의 작업을 담당합니다.

2) 뷰는 모델 데이터 만

작업을 담당하고있다) 실제 모델 데이터

3

를 이벤트, DOM 이벤트를 모델링하고 렌더링을들을