#javascript #model-view-controller #backbone.js
#javascript #модель-вид-контроллер #backbone.js
Вопрос:
Я только начинаю с backbone и пытаюсь настроить представление, в котором есть список вопросов. Слева от списка у меня есть четыре фильтра для фильтрации списка по языку, стране, статусу и учебе. Список и каждый из фильтров загружаются в свои собственные коллекции.
Моя идея состояла в том, чтобы создать это единое представление с несколькими коллекциями, но мне интересно, является ли это лучшей практикой в магистрали, поскольку все примеры, которые я видел, имеют только одну коллекцию на представление.
Другая идея состояла в том, чтобы разбить его на два представления, одно из которых отвечало бы за фильтры, а затем дочернее представление отвечало бы только за список вопросов.
Или, это более магистральный стиль, чтобы поместить все коллекции в модель, а затем передать эту модель моему представлению, как указано здесь:http://documentcloud.github.com/backbone/#FAQ-nested
Спасибо за ваши идеи.
Ответ №1:
ДА. Теоретически представление может охватывать любое количество внутренних объектов / коллекций. Обычно имеет смысл, чтобы представления были как можно более дискретными, но могут быть причины для объединения нескольких объектов в одном представлении.
Это все вопрос дизайна. Я не понимаю, что дает вам создание модели контейнера в качестве корзины для ваших коллекций.
Не слишком заботьтесь об абсолютном лучшем способе. Иногда приходится идти немного по неверному пути, чтобы найти лучшие способы для вашего конкретного проекта.
Ответ №2:
Я думаю, что совершенно законно передавать в представление более одной модели или коллекции — когда это уместно.
Передача model
или collection
конструктору представления автоматически добавит этот объект к экземпляру представления (поэтому он находится в this.model
or this.collection
), но вы также можете передать другие данные, такие как дополнительные коллекции, и они будут расположены в options
объекте (доступны из вашего представления как this.options.countries
и т.д.). Вашему методу views initialize
, если он существует, также будет передан этот объект.
Комментарии:
1. Я всегда использовал этот способ в прошлом. Что касается того, что Марио сказал, что представления должны быть как можно более дискретными, мне сложно оправдать передачу второй коллекции, например, в качестве опции, когда это требуется для корректной работы представления.
Ответ №3:
Не уверен в лучших практиках, но если вы можете разбить его на представления, то это хорошо. В противном случае вам будет лучше создать модель представления с несколькими коллекциями в ней и использовать их в представлении.
Комментарии:
1. А, теперь я понимаю, что вы имели в виду, говоря о модели представления, прочитав часть о вложенной коллекции в документах.