Backbone.js路由未被路由

时间:2012-04-17 14:40:27

标签: routing backbone.js

我在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 有人知道缺少什么吗?

1 个答案:

答案 0 :(得分:4)

您的初始化函数将始终首先运行,因此您的路由器正在实例化,但您可能无法调用历史记录,在您调用路由器后,您需要一行代码,如:

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

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

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

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

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