Пассивное представление в JavaScript - PullRequest
1 голос
/ 20 июля 2010

Я думаю о реализации MVP - шаблона пассивного просмотра в JavaScript.В большинстве случаев представление будет простым элементом dom, к которому докладчик прикрепляет прослушиватели событий.Но когда дело доходит до виджетов, таких как псевдо-селекторы на основе JavaScript, функции автоматического предложения или арии, это должно быть частью класса представления JavaScript или логика изменения представления должна быть частью докладчика?Я посмотрел на javascriptMVCs view , и кажется, что это только html, сгенерированный на основе шаблонов, без какой-либо логики.Но для меня, кажется, нет никакой разницы между докладчиком, который слушает html selectbox, и тем, кто слушает псевдо selectbox с логикой javascript для имитации реального поля выбора.Оба не должны заботиться о том, как работает коробка, им просто нужно прослушать событие изменения.

Так что вы думаете.Какая работа класс просмотра.

Ответы [ 3 ]

2 голосов
/ 21 июля 2010

Объект View должен отвечать за сам рисунок.Пассивное представление знает , как делать вещи, а не , что делать.Он должен нести ответственность за запуск собственных событий.Тот факт, что это виджет с пользовательским полем выбора, ничем не отличается от обычного окна выбора.

Если докладчик взял на себя все обязанности по просмотру, то представление вообще не нужно.Может быть, просто есть только ведущий.

1 голос
/ 07 марта 2012

Работа вида - это адаптер к технологии просмотра.В этом случае ваша технология представления скорее всего будет jQuery поверх HTML через JavaScript.Представление должно быть спроектировано так, чтобы оно делало три вещи:

  • Знайте, когда происходят события, и сообщайте об этих событиях докладчику (это может быть косвенно, с использованием инфраструктуры обмена сообщениями, такой как postal.js )
  • Скажите докладчику (когда его спросят) "каково значение x ", где x - это значение, представленное в виде.
  • Принимать сообщения от докладчика (обычно с помощью прямого вызова метода) для изменения значений в представлении.

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

enter image description here

Стек выше демонстрирует, как я предвижу взаимодействие модели, представления и докладчика, а также их взаимодействие.связь с технологией представления и контроллером.

  • Браузер, HTML и DOM (управляемый с помощью jQuery) представляют собой технологию представления .Они по своей сути сложны и не способны представить вашу модель.
  • представление защищает вашу логику от представления технологии .Он обеспечивает перенаправление, так что вы можете сосредоточиться на простом старом коде в Presenter .Представление должно использовать какой-либо тип обмена сообщениями для обратной связи с докладчиком.Это предотвращает двунаправленную зависимость между представлением и презентатором.Он также позволяет нескольким докладчикам манипулировать видом.
  • презентатор должен отвечать за понимание абстрактной природы представления и должен управлять состоянием model .на основе его интерфейса к представлению.Он способен понять, как извлечь модель из контроллера и как сохранить модель обратно на сервер.
  • модель представляет состояние в конкретный момент времени .Он также может служить DTO между контроллером и презентатором .В JavaScript легко и иногда предпочтительнее просто добавить поведение докладчика к модели .
  • Контроллер координирует навигацию в приложении и отвечает заабстрагирование серверных сервисов от презентации.
1 голос
/ 25 августа 2010

JavaScriptMVC - это фиктивные шаблоны на стороне клиента.Это контроллеры узла, как правило, играют более традиционную роль View.

...