Я бы сказал, что Просмотр должен перехватить событие, вызванное кнопкой, и запустить собственное событие, которое будет обработано контроллером .
Позвольте мнеобъяснить:
@ raynos wrote:
Контроллеры прослушивают ввод.Это означает, что контроллеры прослушивают события от узлов DOM
лично, хотя я согласен с первым утверждением, мне не нравится интерпретация.
Следование этому утверждению означает, что контроллер имеетзнать каждую кнопку / текстовое поле / элемент в интерфейсе пользователя и его идентификатор / селектор.
Я предпочитаю иметь семантические события просмотра огня, такие как "languageSelected" или "searchRequested", и добавлять соответствующие данные к событию.
, поэтому типичным потоком будет то, что представление визуализирует некоторыеПользовательский интерфейс (допустим, у него есть окно поиска и кнопка), когда пользователь нажимает кнопку - View обрабатывает событие и запускает свое собственное событие «searchRequested».Это событие обрабатывается контроллером , который вызывает модель , запрашивающую его выполнить поиск.когда это будет сделано, Model запустит evnet «searchResultsUpdated», который будет обрабатываться View , заставляя его показывать результаты.
, если вы решите изменитьдизайн вашего приложения, отображающий ссылки на поисковые термины вместо поля поиска и кнопки (или даже если вы располагаете их рядом - или на разных экранах), единственное, что вам нужно изменить, это Просмотр .
Техническая справка : Если вы используете JQuery и предполагаете, что ваш вид является объектом javascript, вы можете использовать
$(view).triggerHandler(
$.Event('eventName',{'object:'with','more':'event','related':'data'})
);
для запуска события
И
$(view).on('eventName',handler);
для прослушивания и обработки события.