【发布时间】:2014-03-18 05:39:24
【问题描述】:
我不确定我是否正确地将我的应用程序分成 MVC 逻辑。我对如何处理处理视图和事件逻辑的 DOM 感到困惑。例如:
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 中,视图似乎变得更智能(成为视图控制器)。还有哪些其他方法?
【问题讨论】:
-
好收获。谢谢并更新。
标签: javascript design-patterns model-view-controller