0

我有一个关于在主干视图中使用套接字的问题。

如何从套接字侦听器内部访问模型?我想做类似...

window.SocketView = Backbone.View.extend({

initialize:function () {

     _.bindAll(this, 'render', 'updateModelFromServer'); 

    this.render();

},

render:function () {
    $(this.el).html(this.template());
    return this;
},

events: {

    "click #chageGlobalState"       : "updateModelFromServer"
},

updateModelFromServer: function() {

   socket.emit("globalState", 1);

   socket.on("updateState", function(data) {

        this.model.set("state", data);
    });
});

});

这会导致 socket.io 命名空间错误。在套接字和模型之间共享数据的最佳方式是什么?

我缺少一个简单的语法问题吗?

还是我需要深入研究并使用...

事件聚合器?Backbone.io绑定?木偶?节点?

这个项目是一个类似多媒体聊天的网络应用程序。

提前致谢!

4

1 回答 1

1

看起来您正在尝试this在套接字回调中使用错误。

而不是这样做:

socket.on("updateState", function(data) {
    this.model.set("state", data);
});

尝试这样做:

socket.on("updateState", function(data) {
    this.model.set("state", data);
}.bind(this));
于 2013-01-10T20:46:45.253 回答