Поставить событие на модель или на контроллер? - PullRequest
1 голос
/ 29 ноября 2011

Это для программы MVP на стороне клиента, использующей пассивный просмотр.

Я хочу разрешить пользователю создать контакт и добавить его в цитату. Я хочу, чтобы цитата была уведомлена при создании контакта.

Лучше сделать а) или б)?

а) Слушайте модель

Передача контакта в контроллер контактов и прослушивание сохраненного события на модели

var contact = new Contact()
contact.on('saved', function(contact){ do some stuff })

contactsController.create(contact)

contactsController затем загружает контакт в представление, пользователь вводит некоторую информацию, нажимает на сохранение, контакт сохраняется на сервере, событие contact.saved запускается

б) Прослушивание контроллера

contactsController.on('saved', function(contact) { do some stuff })
contactsController.create()

contactsContoller затем создает модель контакта, загружает контакт в представление, пользователь вводит некоторую информацию, нажимает сохранение, контакт сохраняется на сервере, происходит событие contactController.saved

Спасибо!

Ответы [ 2 ]

1 голос
/ 05 декабря 2011

Я бы порекомендовал следующее.

  • Пользователь нажимает Добавить контакт
  • Представление сообщает докладчику, что контакт был добавлен
  • Подарки выполняются какКоманда, которая обрабатывает добавление контакта

Команда выполняет следующие действия:

  • Отображает диалоговое окно или представление, позволяющее пользователю добавлять контакты.
  • Команда ожидает, пока пользователь не нажмет кнопку добавления или OK, чтобы подтвердить новый контакт.
  • Затем команда обновит модель.
  • Команда сообщает правому предъявителю *, что контакт имеетбыл добавлен

Затем в Presenter, который обрабатывает запросы, вызов Update Update найдет все соответствующие запросы и обновит контактную информацию.Это обновление можно выполнить с помощью шаблона прослушивателя, в котором все представления запросов регистрируются самим докладчиком.

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

1 голос
/ 29 ноября 2011

Я думаю, что это зависит от тонкой, но важной разницы между желанием узнать, когда контакт сохраняется в базе данных, и желанием узнать, когда пользователь отправляет страницу сохранения контакта.Т.е. контроллер может быть не единственным местом, где сохраняется контакт.Если вы хотите знать первое, используйте модель.Если вы хотите знать последнее, используйте контроллер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...