Фильтр / сортировка по виду или по модели? - PullRequest
1 голос
/ 29 мая 2009

Имея список объектов данных и что-то визуальное для представления каждого, где бы вы кодировали логику сортировки / фильтрации? Почему?

Редактировать: все ответы пока хорошие, но я забыл добавить еще одно ограничение. Что если я не хочу каждый раз восстанавливать вид?

Ответы [ 5 ]

2 голосов
/ 29 мая 2009

Ответ лежит в данных. Модель доставляет данные. Если все данные находятся в представлении, фильтрация и сортировка могут содержаться в представлении. Если данные разбиты на части, модель должна доставлять данные и содержать некоторые функции фильтрации / сортировки (представление также может содержать фильтрацию / сортировку).

Контроллер не должен содержать эти функции, поскольку он является механизмом маршрутизации и не должен иметь представления о том, как интерпретировать данные.

2 голосов
/ 29 мая 2009

Зависит от сложности операции сортировки / фильтрации и от того, предлагает ли элемент управления представлением эти услуги изначально. Если элемент управления представлением предлагает фильтрацию и просто переформатирует данные в памяти, оставьте его в представлении. Если для сортировки / фильтрации требуется еще одно обращение к источнику данных, сохраните все это в контроллере.

0 голосов
/ 29 мая 2009

Я считаю, что сортировка должна быть чем-то отдельным. Вы не должны сортировать модель, потому что хотите сохранить ее как есть. По сути, изменение модели подразумевает повторное отображение представления, и вы, вероятно, этого не хотите (например, если вы хотите анимировать переход между состояниями до и после фильтра).

Что я хотел бы предложить, так это то, что модель предоставляет данные для создания списка визуальных объектов для представления и сортировочного объекта. Сортировщик объекта будет выводить список визуализации, который будет просто списком некоторого идентификатора, связанного с визуальными объектами (индекс в списке объектов или другой). Порядок, в котором отображаются идентификаторы, представляет порядок сортировки, а любой идентификатор, отсутствующий в списке визуализации, скрыт. Каждый раз, когда представление получает список визуализации, оно обновляет свой дисплей.

0 голосов
/ 29 мая 2009

Ваш просмотр должен обрабатывать только вывод. Включите любую фильтрацию / сортировку в свою бизнес-логику и верните ее в представление.

0 голосов
/ 29 мая 2009

Я бы добавил в контроллер методы сортировки и фильтрации и вызвал эти методы из представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...