2012-04-06 3 views
2

보기가 변경되었을 때 모델을 업데이트하는 올바른 방법은 무엇입니까? 보기 또는 컨트롤러와 같은 다른 장소에서해야합니까?backbone.js보기가 변경되면 모델을 업데이트하는 올바른 방법

예를 들어이 모델과 관련된 모델 (model1) 및 일부 뷰 (View1)가 있습니다. 보기에서 일부 필드를 변경하면 모델을 업데이트해야합니다. 그렇게하는 올바른 방법은 무엇입니까?

또 다른 뷰 (View2)와 연관된 해당 모델의 컬렉션이 있고 그 컬렉션에 model (model1)을 넣어야합니다. 두 번째 질문 - View1 또는 Model1이 수집에 대해 알고 있어야하며 그렇다면 어떻게해야합니까?

답변

1
MVC에 적용 MVC 이론의 흥미로운 접근 방식은 더 explaination 여기를 봐 ...이

백본 일반적으로 요약 @의 derick - 베일리

에 의해 작성

http://lostechies.com/derickbailey/2011/12/23/backbone-js-is-not-an-mvc-framework/

의 컨트롤러가 무엇인가, 베일리는 백본에는 컨트롤러가 없음을 말한다. 따라서 모든 모델 업데이트는 해당 모델과 관련된 View에서 수행되어야한다고 개인적으로 생각합니다.

백본의 모든 모델은 컬렉션 (또는 컬렉션)에 추가되고 업데이트되면 컬렉션에있는 이벤트를 트리거하므로보기에서 해당 이벤트를 수신해야합니다. 하여 예에서

  • View1.collection = [모델 1];
  • View2.collection = [model1, model2, model3];

그리고 View1이 model1을 변경하면 model1이 이벤트를 수신하여 View2.collection으로 트리거 할 수 있습니다.

+0

하지만 이런 식으로 몇 가지 문제가 있습니다. 예를 들어 Model.change에 가입 ​​한 View가 뷰를 변경하고 업데이트 모델을 변경하면보기가 다시 렌더링됩니다. 이는 과도한 잔인 함입니다. – Ph0en1x

+0

그렇기 때문에 뷰가 보이지 않을 경우 뷰를 삭제하는 것이 좋습니다. 이것이 당신이 의미하는 것이라면. – drinchev

+0

@ ph0en1x 당신은 결코 당신이 사용하지 않는 주위에 viewd를 떠나지 말아야합니다. 앱의 성능이 저하되고 좀비 이벤트가 발생할 수 있습니다! – tkone

0

컨트롤러 모델 이야기, 그래서 예 : 뷰가 변경되면 모델을 업데이트하는 올바른 방법은 컨트롤러를 통해입니다

+0

하지만 백본의 컨트롤러가보기 책임의 일부라는 것을 알고 있으므로 맞습니까? – Ph0en1x

관련 문제