2014-03-12 13 views
0

는 느슨하게 MVVM 패턴의 다양한 구성 요소Backbone + Stickit을 사용할 때 뷰 모델 객체가 Backbone.Model을 확장해야합니까? 이러한 데이터가 서버로 전송하고 서버로 다시 전송 나타냄

  • Model있다했다. UI의 표시와 관련된 상태가 없습니다.
  • ViewModel : 이것은 하나 또는 여러 모델로 구성됩니다. 여기에는 UI 조작을위한 상태가 포함됩니다 (단추 사용 또는 사용 불가능). UI 조작을위한 모든 로직이 여기에 저장됩니다. 이 레이어는 UI 프레임 워크 (jQuery 호출이 없음)에 대한 종속성이 없습니다.
  • View : UI 프레임 워크/기본 UI 컨트롤과 밀접한 관련이 있습니다. 하나의 뷰는 하나의 뷰 모델 만 관찰합니다. 보기 모델은 하나 이상의보기로 관찰 할 수 있습니다. 뷰는 뷰 모델과의 두 바인딩을 담당합니다.
  • presenter/coordinator : 기존 구현의 일부는 아니지만 뷰 모델이 부재 한 경우 너무 많은 책임이 있습니다. 이 사람은 글로벌 이벤트 수집기 등에서 이벤트를 듣고 AJAX 호출 (get/post)을 조정하는 데 도움이됩니다.

독립 실행 형 백본에는보기 모델 및 데이터 바인딩 개념이 없습니다. 이 시나리오에서 서버가 반환 한 데이터는 Backbone.Model 개체로 모델링 할 수 있습니다. 바인딩은 수동으로 수행되며 뷰 모델 동기화에는 POJO를 사용할 수 있습니다.

데이터 바인딩을 위해 Stickit을 사용하려는 경우보기 모델이 Backbone.Model의 인스턴스 여야합니다. 주로 바인딩이 Backbone.View 컨텍스트 내에서 작동하고 Backbone.ViewBackbone.Model 개체가 뷰의 속성으로 존재할 것으로 예상하기 때문입니다. 또한 Backbone.Model은 변경 이벤트를 발생시키고 그렇지 않은 이벤트는 발생시킵니다. 나는 POJO를 관찰하는 것이 어려울 것이라고 생각한다. 다시 말하지만, Stickit 문서를 읽는 것이 내 이해입니다. 내가 틀렸다면 나를 바로 잡아주세요.

Backbone.Modelsave처럼, 뷰 모델의 관점에서 이해가되지 않습니다 거기에 다른 방법을 가지고, fetch 등 내가 다른 MVVM 라이브러리, Knockback에 독서했다. Backbone.ModelKnockout.js 뷰 모델로 변환 할 수 있습니다. Backbone.Model을 완전히 수행하는 대신, 메소드를 얻거나 설정 한 POJO를 받아들이고 속성이 변경되면 변경 이벤트를 발생시킬 수 있습니다.

Stickit은 메소드를 가져 오거나 설정하고 변경 이벤트를 발생시킨 POJO를 전달할 수있는 비슷한 계약을 가지고 있습니까? 권장 용도는 무엇입니까?

답변

0

모델이 실제로 Backbone.Model의 인스턴스가되어야하는 Backbone.Stickit의 소스에는 아무것도 없습니다. 그래서 Stickit은 Backbone에서 제공하는 계약을 지원하는 객체를 필요로합니다. Model - set(), get() 및 on()의 다양한 응용 프로그램이 필요하다고 생각합니다.

Stickit의 test suite을보세요. 백본 모델을 testScaffolding.js의 구현으로 대체하여 테스트를 통과 한 모델 API를 작성한 경우 Stickit에서 해당 모델을 사용할 수 있어야합니다.

편집 : 나는 직접 질문을 해결하지 않을 수도 있습니다. 당신이 백본에서만 사용하도록 Stickit을 요구합니다.보기에서 해당보기에 model 또는 optionalModel 매개 변수로 지정된 다른 개체 (stickit() 함수에 전달할 수 있음)가 있으며 Backbone.Model에서 제공하는 계약을 충족해야합니다.