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错误。