2012-04-02 2 views
4

В настоящее время я использую собственную настройку для MVC-фреймворка в Javascript, но я немного смущен тем фактом, где я должен помещать обработчики HTML-событий.Javascript MVC - отдельная логика

Как и событие click/mouse/focus и тому подобное, допустимо ли подключать эту логику событий к контроллеру.

Прямо сейчас, я это так:

  • Некоторый-module.model.js
  • Некоторого-module.view.js (где прикрепляется мое пользовательским-событие, как события мыши, фокус и т.д.)
  • Некоторые-module.view.tpl (это где HTML будет размещена между скрипт-теги, мини-шаблонный двигатель)
  • Некоторые-module.controller.js

Итак, разумно ли прикрепить обработчики кликов для представления в контроллер? или это плохая практика?

+0

Я думаю, что это именно то, для чего предназначен класс контроллера представления, да. – Thilo

ответ

0

Сохраните javascript и все манипуляции с DOM в файле js.

Separation of concerns

КСТАТИ: Controller является своего рода keyword в MVC, вы можете захотеть изменить имя го JS файла с именем без контроллера внутри него.

+0

Но контроллер является файлом JS ... И как контролирует взаимодействие с его представлением, не заботясь о контроллере? – Thilo

+0

@ Тило. Плохое имя, отредактировано. – gdoron

+0

Ну, я держу «контроллер» в имени файла, приятно видеть, какой файл я редактирую при разработке. Когда сайт развертывается, все файлы JS будут объединены автоматически. Но что вы имеете в виду: «сохранить все манипуляции с DOM в JS-файле»? – barry

2

Помещение обработчиков событий внутри класса контроллера - это неплохая практика. На самом деле библиотека JavaScriptMVC использует класс Controller для организации всех обработчиков событий (хотя это не единственная цель класса Controller).

Включение обработчиков событий внутри класса View не так уж плохо, поскольку это используется Backbone.js для организации всех обработчиков событий, связанных с определенным элементом DOM.

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

0

Хорошо, спасибо всем!

То, что я TODO:

/Контроллеры/ -> некоторые-module.js

/модели/ -> некоторые-module.js (трюмы данные, следить за состояниями, данные) извлечь

/просмотров/ -> некоторые-module.js (прикрепление DOM события, DOM манипуляции, будет извлечь файл шаблона TPL и использовать его)

/шаблоны/ -> некоторые-module.tpl (фактический вид в скрипте-тегах, аналогичный усы или Jquery шаблонов, позволяет мне использовать переменные-тег в шаблоне)

Это будет держать мое приложение организовано и модульной.

Я мог бы рассматривать обработку событий DOM внутри контроллера, но мне также нужно место для выполнения некоторых манипуляций с DOM (изменение имен классов, изменение значений innerHTML и т. Д.), И я думаю, что контроллер не является правильным способом сделать это ,

Смежные вопросы