Как отделить представление от контроллера? - PullRequest
1 голос
/ 11 января 2012

один из моих коллег просмотрел мой код в javascript и сказал мне, что я не должен использовать представление в контроллере.Вместо этого я должен использовать посредника.Я полностью потерян.Он не будет доступен до следующей недели, поэтому я здесь.

В моих приложениях я инициализирую представление в контроллере (псевдокод), как показано ниже.

var controller = (function(){

   return {
      init: function()
      {
          this.view = new View("template");
          this.view.render();
      }
   }

})();

Понятия не имеюкак я отделяю представление от контроллера и использую медиатор для работы с ними.

Может кто-нибудь дать мне идею или пример кода или концепции?

1 Ответ

3 голосов
/ 12 января 2012

Прежде всего, немного о ролях Ms, Vs & Cs в шаблоне MVC:

Три части:

Model -View-Controller:

Мы назовем неизменную сущность приложения / предметной области моделью (в единственном числе).В объектно-ориентированных терминах это будет состоять из набора классов, которые моделируют и поддерживают основную проблему и, следовательно, будут иметь тенденцию быть стабильными и такими же долговечными, как и сама проблема.Сколько должна знать модель (классы) о связи с внешним миром?Ничего, абсолютно ничего.

Model- View -Controller:

Для данной ситуации в данной версии будет один или несколько интерфейсов с моделью, который мы будем называть мнениями (во множественном числе).В объектно-ориентированных терминах они будут состоять из наборов классов, которые дают нам «окна» (очень часто актуальные окна).

Model-View- Controller:

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


То, что ваш коллега пытается сказать вам, это:

ниже изображен поток последовательности (приблизительный), относящийся к платформе Zend, которая является платформой MVC для PHP.

Нажмите здесь , чтобы увеличить изображение.Zend Framework calls

Обратите внимание на Диспетчер (третий от последнего) на приведенной выше схеме.Давайте рассмотрим только следующее для вашего случая:

  • Front.php: как вы видите.
  • Диспетчер: посредник, упомянутый вашим коллегой.
  • MyController: в качестве вашего контроллера.

Что вам нужно сделать, это:Если View должен вызвать событие, он не будет обрабатывать событие сам по себе.Он отправит событие в Диспетчер вместе с параметрами (если они есть) для события. Диспетчер теперь будет

  • Ищите контроллер, способный обрабатывать такое событие.
  • Создать контроллер
  • Передайте событие контроллеру вместе с параметрами (если есть).

Контроллер теперь будет:

  • Подготовиться к событию.
  • Выполнить событие.
  • Вернуть набор результатов (если есть) в Диспетчер .

Диспетчер теперь будет:

  • Вернуть набор результатов (если есть) обратно в Просмотр .

Просмотр теперь будет:

  • Визуализировать набор результатов (если есть) и представить его.

Почему так много нужно сделать?To keep the roles segregated and clear.

...