Routing 主干.js路由未被路由
我的主干项目中有以下代码:Routing 主干.js路由未被路由,routing,backbone.js,Routing,Backbone.js,我的主干项目中有以下代码: App.Controllers.Test = Backbone.Router.extend({ routes: { 'test': 'test', 'help': 'help' }, help: function() { console.log('help'); }, test: function() { console.log('test'); }, initialize: function() {
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
有人知道缺少了什么吗?您的初始化函数将始终首先运行,因此您的路由器正在实例化,但可能您还没有调用历史记录,在调用路由器后,您需要一行代码,如:
Backbone.history.start({pushState: true})
pushState选项是,如果您使用的是具有历史api的较新浏览器,因为您使用哈希调用路由,所以可能不需要pushState
如果将路由器分配给可变路由,则代码可能如下所示:
var routes = new Backbone.Router.extend({...});
Backbone.history.start({pushState: true});
初始化函数将始终首先运行,因此正在实例化路由器,但可能您尚未调用历史记录,在调用路由器后,您需要一行代码,如:
Backbone.history.start({pushState: true})
pushState选项是,如果您使用的是具有历史api的较新浏览器,因为您使用哈希调用路由,所以可能不需要pushState
如果将路由器分配给可变路由,则代码可能如下所示:
var routes = new Backbone.Router.extend({...});
Backbone.history.start({pushState: true});
天哪,就是这样!感谢您澄清我需要使用
Backbone.history
)很高兴我能提供帮助!另一个问题是确保您的服务器能够响应您指定的路由,即使这只是意味着每个服务器路由最初都加载相同的index.html,否则您可能会收到大量404错误。天哪,就是这样!感谢您澄清我需要使用Backbone.history
)很高兴我能提供帮助!另一个问题是确保您的服务器能够响应您指定的路由,即使这只是意味着每个服务器路由最初都加载相同的index.html,否则您可能会收到大量404错误。