Я хочу отфильтровать коллекцию Backbone на основе одного или нескольких свойств ее модели. Я прочитал эту проблему, и я заметил, что наиболее обсуждаемое решение - просто использовать this.where({"applicationType": application});
для фильтрации, а затем либо вернуть новую коллекцию, либо список моделей, которые будут отображаться.Фильтрация несвязываемой основной сетки
В принципе у меня нет проблем с этим, но, пытаясь его реализовать, я заметил одну проблему. Если я следую шаблону проектирования базовых объектов только для видов рендеринга, когда их родительская коллекция запускает событие, чтобы сказать, что что-то изменилось, я думаю, у меня есть два варианта.
1: Я беру список фильтрованных объектов/новой коллекции и перезаписываю основную коллекцию.
2: Я изменяю коллекцию, которую сейчас прослушивает представление, в новый отфильтрованный список.
Проблема заключается в том, что я хочу, чтобы этот процесс был неразрушающим для основной коллекции, полученной с сервера. Я всегда хочу очистить свои фильтры и вернуться к этому.
Тот способ, которым я думаю, что я могу сделать это следующим образом:
Вместо того, чтобы возвращать новый экземпляр коллекции я имею в виду просто добавить флаг «» дисплей для моделей, которые должны быть отображены. Тогда я всегда буду пытаться «отобразить» всю коллекцию, но будут отображаться только модели с флагом отображения, что не приведет к разрушению основной коллекции.
Это лучший способ подойти к проблеме или я пропустил простое решение?
Я пытаюсь избежать плагинов, если это вообще возможно. Я ищу чистое «базовое решение». Спасибо за ваш ответ. –
А, я вижу. Виртуальные коллекции - всего 200 строк кода. Возможно, вы можете получить вдохновение от источника. – Tholle
@Tholle, вот что я искал какое-то время. Благодарю. –