我在Backbone项目中有以下代码:
App.Controllers.Test = Backbone.Router.extend({
routes: {
'test': 'test',
'help': 'help'
},
help: function() {
console.log('help');
},
test: function() {
console.log('test');
},
initialize: function() {
console.log('init');
}
});
// ...
new App.Controllers.Test()
但即使用init
或#test
拨打网址,我在控制台中看到的所有内容都是#help
有人知道缺少什么吗?
答案 0 :(得分:4)
您的初始化函数将始终首先运行,因此您的路由器正在实例化,但您可能无法调用历史记录,在您调用路由器后,您需要一行代码,如:
Backbone.history.start({pushState: true})
如果您使用具有历史记录api的较新浏览器,则pushState选项是,因为您使用哈希调用路由,因此可能不需要pushState。
如果您的路由器已分配给变量路由,则您的代码可能如下所示:
var routes = new Backbone.Router.extend({...});
Backbone.history.start({pushState: true});