データオブジェクトのリストとそれぞれを表すビジュアルがあれば、ソート/フィルタリングロジックをどこでコーディングしますか?どうして?ビューまたはモデル内のフィルタ/ソート?
編集:これまでのすべての回答は良いですが、別の制約を追加するのを忘れました。毎回ビューを再構成したくない場合はどうすればいいですか?
データオブジェクトのリストとそれぞれを表すビジュアルがあれば、ソート/フィルタリングロジックをどこでコーディングしますか?どうして?ビューまたはモデル内のフィルタ/ソート?
編集:これまでのすべての回答は良いですが、別の制約を追加するのを忘れました。毎回ビューを再構成したくない場合はどうすればいいですか?
答えはデータにあります。モデルはデータを配信します。すべてのデータがビュー内にある場合、フィルタリングと並べ替えはビュー内に含めることができます。データがチャンクされている場合、モデルはデータを配信し、フィルタリング/並べ替えの一部を含んでいる必要があります(ビューにはまだフィルタリング/並べ替えが含まれている可能性があります)。
コントローラーはルーティングメカニズムであり、データの解釈方法を知らないので、これらの機能を含むべきではありません。
コントローラの並べ替えとフィルタリングの方法を取り入れ、ビューからこれらのメソッドを呼び出します。
ビューでは、出力の表示のみを処理する必要があります。フィルタリング/ソートをビジネスロジックに入れて、ビューに戻します。
ソート/フィルタ操作の複雑さ、およびビューコントロールがこれらのサービスをネイティブに提供するかどうかによって異なります。ビューコントロールがフィルタリングを提供し、インメモリデータを再フォーマットするだけであれば、それをビューに残します。ソート/フィルタでデータソースへの別のトリップが必要な場合は、コントローラ内にすべて保持してください。
ソートは別のものにする必要があります。モデルをそのままにしておきたいので、モデルをソートしないでください。基本的に、モデルの変更はビューの再レンダリングを意味し、そのようなことは望ましくありません(たとえば、フィルタ状態の前と後の間の遷移をアニメートする場合)。
私は、モデルがビューのビジュアルオブジェクトとソーターオブジェクトのリストを作成するためのデータを提供していることをお勧めします。ソーターオブジェクトはレンダリングリストを出力します。レンダーリストは、ビジュアルオブジェクトにリンクされた識別子のリスト(オブジェクトリストなどのインデックス)になります。 IDが表示される順序は並べ替えの順番を表し、レンダーリストにないIDは非表示になります。ビューがレンダーリストを受け取るたびに、そのレンダリストが更新されます。
私は、ルーティング機構であるコントローラの記述が気に入っています。 –