0

我的 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()

但是我在控制台中看到的只是用orinit调用 url 有人知道缺少什么吗?#test#help

4

1 回答 1

4

您的初始化函数将始终首先运行,因此您的路由器正在被实例化,但也许您还没有调用历史记录,在您调用路由器之后,您需要一行代码,例如:

Backbone.history.start({pushState: true})

pushState 选项是如果您使用具有历史 API 的较新浏览器,因为您使用哈希调用路由,您可能不需要 pushState。

如果您的路由器分配给可变路由,您的代码可能如下所示:

var routes = new Backbone.Router.extend({...});

Backbone.history.start({pushState: true});
于 2012-04-17T14:46:59.203 回答