【问题标题】:accessing model with socket.io causes namespace error in backbone view使用 socket.io 访问模型会导致主干视图中的命名空间错误
【发布时间】:2013-01-10 20:41:12
【问题描述】:

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

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

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绑定?木偶?节点?

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

提前致谢!

【问题讨论】:

    标签: node.js backbone.js namespaces socket.io


    【解决方案1】:

    您似乎试图在套接字回调中使用错误的this

    不要这样做:

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

    尝试这样做:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-20
      • 2013-08-31
      • 2014-10-26
      • 1970-01-01
      • 2020-10-10
      • 2012-01-10
      • 1970-01-01
      • 2013-02-01
      相关资源
      最近更新 更多