Может ли магистральный вид иметь более одной коллекции?

#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. А, теперь я понимаю, что вы имели в виду, говоря о модели представления, прочитав часть о вложенной коллекции в документах.