我试图在我的视图中初始化时触发一些事件。如果我在浏览器中来回或者我加载第二个视图,但是在第一次加载时没有,即当用户登陆视图时,它们可以工作。
我的设置如下:
我在router.js创建了一个事件聚合器,如:
socketEvents: _.extend({}, Backbone.Events)
然后我将聚合器传递给每个视图,如:
index: function() {
this.changeView(new IndexView({socketEvents:this.socketEvents}));
},
然后在index.js中我做了类似的事情:
initialize: function(options) {
this.socketEvents = options.socketEvents;
this.socketEvents.trigger('one:event');
},
正如我所说,如果我刷新页面不起作用,如果我移动到另一个视图并在浏览器中回击,则会触发事件。
为什么会这样?我该如何解决这个问题?
由于
首次评论后编辑:
我可以/不知道如何跟踪错误。在initialize()要么它只是无缝地完成整个事务:trigger和listenTo,或者它在initialize()时完全忽略它。执行顺序如下:
我用require启动应用程序,从那里用router和socket.io客户端加载一个类。然后它使用socket.io客户端并使用路由器事件聚合器。然后它检查用户是否被记录,如果是,则触发router.event表示用户已登录。在socket.io客户端,有一个event.Dispatcher绑定登录以启动套接字。最后,用户是重定向器到索引视图。然后它就像我上面描述的那样发生。