我想分开DOM操作和交互(jQuery)让我们从客户端应用程序逻辑(socket.io)调用此VIEW,让我们将其称为控制器。沟通需要有两种方式:
我在这两个JavaScript对象之间进行通信时遇到问题。我如何以有效的方式在两者之间进行沟通?简单的例子如下。
// CONTROLLER LOGIC (socket.io stuff)
function socketController() {}
socketController.prototype = {
constructor: function() {
// define socket listners
this.socket.on('chatMessage', this.chatUpdate.bind(this));
}
chatUpdate: function(data) {
// somehow call a "render" function on the "view" object
// this.view.renderChatDOM(data.username, data.message);
}
}
// VIEW LOGIC (jQuery stuff)
function jqueryView() {}
jqueryView.prototype = {
onDOMReady: function() {
// bind event handlers
$('#send-message').bind('click', this.sendMessage.bind(this));
}
sendMessage: function(event) {
// manipulate DOM
var $messageNode = $('#message-input'),
$buttonNode = $('#send-message'),
message = $messageNode.val();
$messageNode.val(''); // clear input
// somehow call the socketController and send data
// this.socketController.chatSend(message);
}
}
答案 0 :(得分:1)
为什么不看一下DOM操作库,它提供从视图到控制器(或viewmodel)的双向数据绑定。然后,您不必管理手动更新,只需更改客户端模型(或客户端视图),框架将负责保持层同步。 http://knockoutjs.com可能是个好看的地方。
答案 1 :(得分:0)
所以最后哈西斯是对的。我确实在javascript中寻找一个MVC框架。我决定使用backbone.js,因为就尺寸,学习曲线和资源而言,它是最不具侵入性的。
这解决了我从DOM操作和表示(VIEW)中分离应用程序逻辑(MODEL)的问题。
去backbone.js !!