我有一个使用Backbone 0.5.3的工作应用程序,它不再使用主干0.9.2。
我发现Router.navigate()由于某种原因没有调用我的路由。
这是我的路由器:
var Router = Backbone.Router.extend({
routes: {
'/mypage': 'mypage',
},
mypage: function() {
// show page ...
}
});
手动调用路线可以正常工作:
Router.mypage()
我还试图覆盖骨干网的.navigate方法来调试我的应用程序......
var Router = Backbone.Router.extend({
routes: {
'/mypage': 'mypage',
},
navigate: function(fragment, options) {
console.log("navigate called");
Backbone.history.navigate(fragment, options);
},
mypage: function() {
// show page ...
}
});
......似乎.navigate被调用但是......
Backbone.history.navigate(fragment, options);
......只是不打电话给路线。
我正在使用PushState,这是我的初始调用:
Backbone.history.start({
root: '/',
pushState: true,
silent: true
});
在没有root和silent参数的情况下尝试过它 - 没有成功。
再次:使用Backbone 0.5.3。
感谢大家的回复!
Achim的
答案 0 :(得分:3)
您必须为导航方法设置触发选项,例如:
Router.navigate("/mypath", {trigger: true})
答案 1 :(得分:2)
来自fine manual:
延伸
Backbone.Router.extend(properties, [classProperties])
开始创建自定义路由器类。 [...]请注意,您要避免在路径定义中使用前导斜杠:
我猜你只需要删除routes
中的前导斜杠,例如:
routes: {
'mypage': 'mypage',
},
答案 2 :(得分:0)
您必须创建路由器的实例。
var router = new Router();
router.navigate(...);