0

DOMの操作と相互作用(jQuery)を分離したいので、これをVIEWと呼び、クライアント側のアプリケーションロジック(socket.io)からこれをコントローラーと呼びます。通信は双方向である必要があります。

  • ユーザーがDOMを操作するとき(ボタンをクリックするなど)にコントローラーに表示
  • サーバーがDOMに表示される更新を送信したときに表示するコントローラー(新しいチャットメッセージなど)

これら2つのJavaScriptオブジェクト間の通信に問題があります。どうすれば効率的な方法で2つの間で通信できますか?以下の簡単な例。

// 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);
    }
}
4

2 に答える 2

1

ビューからコントローラー (またはビューモデル) への双方向のデータ バインディングを提供する DOM 操作ライブラリを見てみましょう。その後、手動更新を管理する必要はありませんが、フレームワークがレイヤーの同期を維持するクライアント側モデル (またはクライアント ビュー) を変更するだけです。http://knockoutjs.comは、一見するのに適した場所かもしれません。

于 2012-09-26T08:36:04.657 に答える
0

結局、ハシスは正しかった。私は確かにJavaScriptでMVCフレームワークを探していました。サイズ、学習曲線、およびリソースに関する限り、backbone.js を使用することにしました。

これにより、アプリケーション ロジック (MODEL) を DOM の操作と表示 (VIEW) から分離するという私の問題が解決されます。

backbone.jsに行く!!

于 2012-10-05T05:03:11.057 に答える