Кодирование в архитектуре MVC

Мне нужно представить сложную модель в архитектуре MVC (коллекция представлений модели). Я использую backbone.js с jsTree.

Я получаю данные с сервера как JSON и создаю из них дерево. Для отображения дерева я использую плагин jQuery jsTree. Данные представляют архитектуру файловой системы некоторой удаленной системы.

Проблемы, с которыми я сталкиваюсь, следующие:

  1. Должен ли я создать две модели? Одна представляет каталог, а другая — файл, поскольку внутри каталога может быть больше файлов.
  2. Как я могу прикрепить представление к пользовательскому интерфейсу? Я хочу прослушивать все события и выполнять некоторые действия на стороне сервера в зависимости от них, потому что представление динамически создается подключаемым модулем jsTree.
  3. Если я сделаю 2 модели, нужно ли мне делать 2 коллекции? Подойдет ли одна, потому что идентификаторы в полном наборе всех моделей будут уникальными?

Спасибо


person Parv Sharma    schedule 10.05.2012    source источник
comment
Почти уверен, что вы имеете в виду представление модели контроллер, так как это то, что означает MVC в более широком мире. Контроллер — это, по сути, ответ на вопрос №2. Я не использую магистраль, но я заметил, что они различают Controller и Collection. liquidmedia.ca/blog/2011/01/backbone-js-part -1   -  person CodeClown42    schedule 10.05.2012
comment
@Пав Шарма: НЕПРАВИЛЬНО. Вернитесь на эту страницу и просто введите в браузере контроллер find. Вероятно, вы захотите начать с раздела Ссылки между моделями и представлениями, где появляется контроллер, и именно здесь используется слово «контроллер». Очевидно, что в магистрали есть Controller классов, на них явно ссылаются. Может быть, вам просто нужно немного почитать об инструментах, которые вы надеетесь использовать...   -  person CodeClown42    schedule 10.05.2012
comment
@goldilocks, пожалуйста, прочтите раздел Как Backbone соотносится с традиционным MVC? на той же веб-странице. Я программирую, используя asp.net mvc, и довольно тщательно использую архитектуру MVC. я знаю, на что я ссылаюсь здесь.. в backbone.js C MVC означает сбор, а работа контроллеров выполняется представлениями   -  person Parv Sharma    schedule 10.05.2012
comment
В этом абзаце (и другом, на который я указал) проводится различие между использованием модели и представления и модели, представления и дискретного контроллера (если это помогает любому, в Backbone класс View также можно рассматривать как своего рода контроллер). AFAICT, коллекция является частью вашей модели. Если вы где-то не видели явное использование коллекции представлений модели фразы (я не вижу), не путайте себя таким образом.   -  person CodeClown42    schedule 10.05.2012
comment
От вступления до ссылки на магистраль в моем первом комментарии: В Backbone есть пять основных прототипов. [...] [3] Backbone.Controller — более или менее именно то, что вы думаете.   -  person CodeClown42    schedule 10.05.2012


Ответы (2)


Каталог и файл действительно представляют составной шаблон проектирования. Вы можете иметь две модели (File и Directory), но затем использовать полиморфизм, чтобы сделать что-то вроде this.getContents().

У меня нет большого опыта работы с магистралью, поэтому я не могу дать совет по пункту 2 или 3. (Я предлагаю вам разделить их на другие вопросы.)

person Dan Blows    schedule 10.05.2012
comment
хотя хорошая идея .. я не думаю, что хотел бы сделать что-то подобное. так как это может создать путаницу в отношении того, что будет возвращено. после вызова функции, и я должен проверять при каждом вызове функции тип объекта, на котором он ее вызывает. - person Parv Sharma; 11.05.2012

Я знаю, что этот ответ опаздывает, но вы могли бы сделать себе огромную услугу и сначала нарисовать дизайн в каком-нибудь приложении UML, таком как Astah Community. Это поможет вам идентифицировать объекты и отношения между объектами и значительно упростит кодирование.

person Brendan Delumpa    schedule 22.05.2012