2015-07-18 2 views
3

Я хочу отфильтровать коллекцию Backbone на основе одного или нескольких свойств ее модели. Я прочитал эту проблему, и я заметил, что наиболее обсуждаемое решение - просто использовать this.where({"applicationType": application}); для фильтрации, а затем либо вернуть новую коллекцию, либо список моделей, которые будут отображаться.Фильтрация несвязываемой основной сетки

В принципе у меня нет проблем с этим, но, пытаясь его реализовать, я заметил одну проблему. Если я следую шаблону проектирования базовых объектов только для видов рендеринга, когда их родительская коллекция запускает событие, чтобы сказать, что что-то изменилось, я думаю, у меня есть два варианта.

1: Я беру список фильтрованных объектов/новой коллекции и перезаписываю основную коллекцию.

2: Я изменяю коллекцию, которую сейчас прослушивает представление, в новый отфильтрованный список.

Проблема заключается в том, что я хочу, чтобы этот процесс был неразрушающим для основной коллекции, полученной с сервера. Я всегда хочу очистить свои фильтры и вернуться к этому.

Тот способ, которым я думаю, что я могу сделать это следующим образом:

Вместо того, чтобы возвращать новый экземпляр коллекции я имею в виду просто добавить флаг «» дисплей для моделей, которые должны быть отображены. Тогда я всегда буду пытаться «отобразить» всю коллекцию, но будут отображаться только модели с флагом отображения, что не приведет к разрушению основной коллекции.

Это лучший способ подойти к проблеме или я пропустил простое решение?

ответ

2

Похоже, что вы хотите отображать определенные модели в коллекции на основе состояния, но при этом сохранить коллекцию неповрежденной. Если это просто проблема рендеринга, это идеальный вариант использования для Virtual Collections.

+0

Я пытаюсь избежать плагинов, если это вообще возможно. Я ищу чистое «базовое решение». Спасибо за ваш ответ. –

+0

А, я вижу. Виртуальные коллекции - всего 200 строк кода. Возможно, вы можете получить вдохновение от источника. – Tholle

+1

@Tholle, вот что я искал какое-то время. Благодарю. –

Смежные вопросы