2011-04-29 2 views
11

나는 단지 백본으로 시작하고 질문 목록이있는보기를 설정하려고합니다. 목록의 왼쪽에는 언어, 국가, 상태 및 연구별로 목록을 필터링하는 4 개의 필터가 있습니다. 목록과 각 필터는 자체 컬렉션에로드됩니다.백본보기에 컬렉션이 둘 이상있을 수 있습니까?

내 생각은이 컬렉션을 여러 컬렉션으로 만드는 것이었지만 필자가 본 모든 예제는 뷰 당 하나의 컬렉션 만 가지고 있기 때문에 이것이 백본에서 가장 좋은 방법인지 궁금합니다.

또 다른 아이디어는 필터에 책임이있는 사람과 두 사람의 의견을 담당하는 자식보기가있는 두보기로 나누는 것입니다. 당신의 아이디어에 대한 http://documentcloud.github.com/backbone/#FAQ-nested

감사 :

또는, 더 백본 스타일은 모델로 컬렉션을 모두 삭제 한 후 여기에 언급처럼 내보기에 그 모델을 전달하는 것입니다.

답변

24

예. 이론적으로 뷰는 임의의 수의 내부 오브젝트/콜렉션을 포함 할 수 있습니다. 일반적으로보기를 가능한 한 분리 된 상태로 유지하는 것이 좋지만 한 가지보기에서 둘 이상의 것을 래핑하는 이유가있을 수 있습니다.

이것은 모두 설계상의 문제입니다. 컬렉션을위한 버킷으로 컨테이너 모델을 만드는 것이 무엇을 구매하는지 알지 못합니다.

절대적인 최선의 방법에 너무 신경 쓰지 마십시오. 때로는 특정 프로젝트에 대한 더 나은 방법을 찾아 내기 위해 잘못된 길로 약간 걷는 것이 필요합니다.

1

베스트 프랙티스가 확실하지 않지만 뷰를 깨뜨릴 수 있다면 좋은 것입니다. 그렇지 않으면 여러 컬렉션이 포함 된보기 모델을 만든 다음보기에서 사용하는 것이 좋습니다.

+0

아, 이제 문서의 중첩 된 컬렉션 비트를 읽은 후 뷰 모델에 대한 의미를 알 수 있습니다. –

9

필자는 적절한 경우 하나 이상의 모델 또는 컬렉션을보기로 전달하는 것이 합법적이라고 생각합니다.

(그래서 this.model 또는 this.collection에서의) 뷰 인스턴스에 자동으로 추가됩니다 뷰 생성자에 해당 객체를 model 또는 collection를 전달하지만 당신은 또한 여분의 컬렉션과 같은 다른 데이터를 전달할 수 있으며이 options 객체에 위치 할 것 (보기 내에서 this.options.countries 등으로 액세스 할 수 있음). 귀하의보기 initialize 메서드가 있으면이 개체도 전달됩니다.

+0

저는 항상 과거에 이런 식으로 사용했습니다. 마리오는 뷰가 가능한 한 분리되어야한다고 말하면서 뷰가 제대로 작동하려면 _required_ 할 때 옵션으로 두 번째 컬렉션을 전달하는 것을 정당화하는 것이 어렵다는 것을 알게되었습니다. – maletor

관련 문제