2009-05-29 3 views
1

데이터 개체 목록과 각각을 나타내는 시각적 요소가 있으면 정렬/필터링 논리를 어디에 코드합니까? 왜?보기 또는 모델에서 필터/정렬?

편집 : 지금까지의 모든 답변은 좋았지 만 다른 제약 조건을 추가하는 것을 잊었습니다. 매번 뷰를 재구성하지 않으려면 어떻게해야합니까?

답변

2

답변은 데이터에 있습니다. 모델은 데이터를 전달합니다. 모든 데이터가 뷰에 있으면 필터링 및 정렬이 뷰 내에 포함될 수 있습니다. 데이터가 청크 된 경우 모델은 데이터를 전달하고 일부 필터링/정렬을 포함해야합니다 (뷰에는 여전히 필터링/정렬이 포함될 수 있음).

컨트롤러는 라우팅 메커니즘이며 데이터를 해석하는 방법을 모르기 때문에 이러한 기능을 포함하지 않아야합니다.

+0

나는 라우팅 메커니즘이되는 컨트롤러에 대한 설명을 좋아합니다. –

0

컨트롤러에서 정렬 및 필터링 방법을 적용하고 이러한 메서드를 뷰에서 호출합니다.

0

보기는 출력 표시 만 처리해야합니다. 비즈니스 로직에 필터링/정렬을 넣고 뷰로 되돌립니다.

2

정렬/필터 작업의 복잡성과 뷰 컨트롤이 이러한 서비스를 기본적으로 제공하는지 여부에 따라 다릅니다. 뷰 컨트롤이 필터링을 제공하고 단순히 메모리 내 데이터를 다시 포맷하면 뷰에 그대로 두는 것입니다. 정렬/필터에 데이터 소스에 대한 다른 트립이 필요한 경우 컨트롤러에 모든 것을 보관하십시오.

0

나는 분류가 분리되어야한다고 생각합니다. 모델을 그대로 유지하려는 경우 모델을 정렬해서는 안됩니다. 기본적으로 모델의 변경은 뷰를 다시 렌더링 함을 의미하므로 아마 원하지 않습니다 (예를 들어 사전 및 사후 필터 상태 사이의 전환을 애니메이션으로 만들려면).

내가 제안하는 것은 모델이 뷰의 시각적 개체 목록과 분류기 개체 목록을 만드는 데 필요한 데이터를 제공한다는 것입니다. 분류기 객체는 시각적 객체 (객체 목록의 색인 또는 기타)와 연결된 식별자의 목록 일 뿐인 렌더링 목록을 출력합니다. ID가 나타나는 순서는 정렬 순서를 나타내며 렌더링 목록에없는 ID는 숨겨집니다. 뷰가 렌더리스트를 수신 할 때마다 디스플레이가 업데이트됩니다.

관련 문제