2009-05-29 6 views
1

データオブジェクトのリストとそれぞれを表すビジュアルがあれば、ソート/フィルタリングロジックをどこでコーディングしますか?どうして?ビューまたはモデル内のフィルタ/ソート?

編集:これまでのすべての回答は良いですが、別の制約を追加するのを忘れました。毎回ビューを再構成したくない場合はどうすればいいですか?

答えて

2

答えはデータにあります。モデルはデータを配信します。すべてのデータがビュー内にある場合、フィルタリングと並べ替えはビュー内に含めることができます。データがチャンクされている場合、モデルはデータを配信し、フィルタリング/並べ替えの一部を含んでいる必要があります(ビューにはまだフィルタリング/並べ替えが含まれている可能性があります)。

コントローラーはルーティングメカニズムであり、データの解釈方法を知らないので、これらの機能を含むべきではありません。

+0

私は、ルーティング機構であるコントローラの記述が気に入っています。 –

0

コントローラの並べ替えとフィルタリングの方法を取り入れ、ビューからこれらのメソッドを呼び出します。

0

ビューでは、出力の表示のみを処理する必要があります。フィルタリング/ソートをビジネスロジックに入れて、ビューに戻します。

2

ソート/フィルタ操作の複雑さ、およびビューコントロールがこれらのサービスをネイティブに提供するかどうかによって異なります。ビューコントロールがフィルタリングを提供し、インメモリデータを再フォーマットするだけであれば、それをビューに残します。ソート/フィルタでデータソースへの別のトリップが必要な場合は、コントローラ内にすべて保持してください。

0

ソートは別のものにする必要があります。モデルをそのままにしておきたいので、モデルをソートしないでください。基本的に、モデルの変更はビューの再レンダリングを意味し、そのようなことは望ましくありません(たとえば、フィルタ状態の前と後の間の遷移をアニメートする場合)。

私は、モデルがビューのビジュアルオブジェクトとソーターオブジェクトのリストを作成するためのデータを提供していることをお勧めします。ソーターオブジェクトはレンダリングリストを出力します。レンダーリストは、ビジュアルオブジェクトにリンクされた識別子のリスト(オブジェクトリストなどのインデックス)になります。 IDが表示される順序は並べ替えの順番を表し、レンダーリストにないIDは非表示になります。ビューがレンダーリストを受け取るたびに、そのレンダリストが更新されます。

関連する問題