데이터 개체 목록과 각각을 나타내는 시각적 요소가 있으면 정렬/필터링 논리를 어디에 코드합니까? 왜?보기 또는 모델에서 필터/정렬?
편집 : 지금까지의 모든 답변은 좋았지 만 다른 제약 조건을 추가하는 것을 잊었습니다. 매번 뷰를 재구성하지 않으려면 어떻게해야합니까?
데이터 개체 목록과 각각을 나타내는 시각적 요소가 있으면 정렬/필터링 논리를 어디에 코드합니까? 왜?보기 또는 모델에서 필터/정렬?
편집 : 지금까지의 모든 답변은 좋았지 만 다른 제약 조건을 추가하는 것을 잊었습니다. 매번 뷰를 재구성하지 않으려면 어떻게해야합니까?
답변은 데이터에 있습니다. 모델은 데이터를 전달합니다. 모든 데이터가 뷰에 있으면 필터링 및 정렬이 뷰 내에 포함될 수 있습니다. 데이터가 청크 된 경우 모델은 데이터를 전달하고 일부 필터링/정렬을 포함해야합니다 (뷰에는 여전히 필터링/정렬이 포함될 수 있음).
컨트롤러는 라우팅 메커니즘이며 데이터를 해석하는 방법을 모르기 때문에 이러한 기능을 포함하지 않아야합니다.
컨트롤러에서 정렬 및 필터링 방법을 적용하고 이러한 메서드를 뷰에서 호출합니다.
보기는 출력 표시 만 처리해야합니다. 비즈니스 로직에 필터링/정렬을 넣고 뷰로 되돌립니다.
정렬/필터 작업의 복잡성과 뷰 컨트롤이 이러한 서비스를 기본적으로 제공하는지 여부에 따라 다릅니다. 뷰 컨트롤이 필터링을 제공하고 단순히 메모리 내 데이터를 다시 포맷하면 뷰에 그대로 두는 것입니다. 정렬/필터에 데이터 소스에 대한 다른 트립이 필요한 경우 컨트롤러에 모든 것을 보관하십시오.
나는 분류가 분리되어야한다고 생각합니다. 모델을 그대로 유지하려는 경우 모델을 정렬해서는 안됩니다. 기본적으로 모델의 변경은 뷰를 다시 렌더링 함을 의미하므로 아마 원하지 않습니다 (예를 들어 사전 및 사후 필터 상태 사이의 전환을 애니메이션으로 만들려면).
내가 제안하는 것은 모델이 뷰의 시각적 개체 목록과 분류기 개체 목록을 만드는 데 필요한 데이터를 제공한다는 것입니다. 분류기 객체는 시각적 객체 (객체 목록의 색인 또는 기타)와 연결된 식별자의 목록 일 뿐인 렌더링 목록을 출력합니다. ID가 나타나는 순서는 정렬 순서를 나타내며 렌더링 목록에없는 ID는 숨겨집니다. 뷰가 렌더리스트를 수신 할 때마다 디스플레이가 업데이트됩니다.
나는 라우팅 메커니즘이되는 컨트롤러에 대한 설명을 좋아합니다. –