Backbone JS Routing无法按预期工作

时间:2012-03-06 10:11:24

标签: javascript backbone.js browser-history

我想我缺少一些关于Backbone路由功能的基础知识。

我正在构建一个应用程序,它看起来像这样:

file: app.js

App = {}
App.nav = new Backbone.Router;
require('app/controller');

file: controller.js

App.nav.route('home', 'home', function () {
    console.log("Home Activated");
});

App.navigate('home');

此时浏览器将地址栏中的URL更改为/home但没有任何反应,我没有收到Home Activated控制台消息。

我已经尝试使用自己的路由类(即Backbone.Router.extend({})),但我并没有真正看到它的一点,因为我仍然需要初始化它,我想使用中央历史/导航我的应用程序,所有模块/控制器都添加路由,而不是为每个控制器创建一个路由器。

我做错了什么?

3 个答案:

答案 0 :(得分:15)

http://documentcloud.github.com/backbone/#Router-navigate

来自文档:

  

如果您还想调用路线功能,请将触发选项设置为true。

但正如OlliM所写,你需要首先激活历史记录!

所以你的答案应该是:

Backbone.history.start();
App.nav.navigate('home', {trigger: true});

编辑: 忘了把“导航”

答案 1 :(得分:6)

要使路由正常工作,您需要在设置路由后调用Backbone.history.start()(基本上在完成所有其他操作后)。请参阅:http://documentcloud.github.com/backbone/#History-start

答案 2 :(得分:1)

我只是想指出这一点,因为它为我节省了一个伤心和痛苦的世界。

如果您要转到自定义页面,例如

if (std::ifstream input{"input_file.txt"})
    ;

它似乎无法正常工作。添加尾随' /'

Backbone.router.navigate('/some/page'); // does not work

这花了我几个小时的故障排除......