Я не уверен, правильно ли я разделяю свое приложение на MVC-логику. Я смущен относительно того, как обращаться с DOM, который занимается как логикой представления, так и событиями. Например:Как отделить логику просмотра DOM от логики событий DOM (контроллер?) В JavaScript?
var HistoryView = function($siblingEl) {
this.$el = $(
'<div class="history">' +
'<button class="backward"><</button>' +
'<button class="forward">></button>' +
'</div>'
);
$siblingEl.after(this.$el);
$('.backward').on('click', function() {
Events.fire('clickPrev');
});
...
, а затем контроллер:
var HistoryManager = function(board, game) {
Events.on('clickPrev', function() {
var move = History.getPrev();
if (move) {
board.undoMove(move);
game.turn -= 1;
History.undo();
}
});
...
Хороший кусок кода с моей точкой зрения направлен на то, чтобы слушать события DOM и затем передавая их к моему обычаю Event
метаобъекта; мой контроллер затем прослушивает Event
, а не DOM. Кажется гораздо более простым, чтобы контроллер прослушивал DOM напрямую, но тогда он должен был бы знать о представлении. Есть ли способ справиться с этим? В Backbone кажется, что представление становится более умным (становится View-Controller). Какие существуют другие подходы?
Хороший улов. Спасибо и обновлены. – gwg