【发布时间】:2014-06-25 21:17:26
【问题描述】:
我已经创建了一个带有 Backbone 的 pubSub 对象,如下所示:
App.Vent = _.extend({}, Backbone.Events);
我还创建了一个路由器,它在默认 uri 上触发一个全局事件:http://localhost/
App.Router = Backbone.Router.extend({
routes: {
'': 'default',
},
default: function() {
App.Vent.trigger('contactsTable:show');
}
});
App.Views.ContactsTable = Backbone.View.extend({
tagName: 'ul',
initialize: function() {
App.Vent.on('contactsTable:show', this.updateApp, this);
},
updateApp: function() {
console.log( 'Show All Contacts' );
}
});
new App.Router;
Backbone.history.start();
new App.Views.ContactsTable;
方法default被成功调用,但事件(contactsTable:show)在方法内不被触发。
但是,如果我最初加载页面时说:http://localhost/#contacts,然后从那里导航回http://localhost/,事件确实会在路由器方法内触发。
我不知道为什么会这样。我需要在默认路由上触发一个事件,无论它是否是打开应用程序时的第一条路由。
【问题讨论】:
-
你怎么知道事件没有被触发?您确定要在调用
default路由器之前绑定您的侦听器吗? -
谢谢你,你说对了。我在实例化路由器并调用
Backbone.history.start()之前绑定了监听器。
标签: javascript backbone.js underscore.js publish-subscribe