我想我缺少一些关于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({})
),但我并没有真正看到它的一点,因为我仍然需要初始化它,我想使用中央历史/导航我的应用程序,所有模块/控制器都添加路由,而不是为每个控制器创建一个路由器。
我做错了什么?
答案 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
这花了我几个小时的故障排除......