我有一个关于在骨干视图中使用套接字的问题。
如何从套接字侦听器内部访问模型?我想做点什么...
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.ioBind?木偶? dnode? P>
这个项目是一个类似多媒体聊天的网络应用程序。
提前感谢!
答案 0 :(得分:1)
看起来你正试图在套接字回调中使用错误的this
。
而不是这样做:
socket.on("updateState", function(data) {
this.model.set("state", data);
});
尝试这样做:
socket.on("updateState", function(data) {
this.model.set("state", data);
}.bind(this));