这两种处理路线的方法有什么区别?
var Router = Backbone.Router.extend({
routes: {'home': 'showHome},
showHome: function() {//do whatever}
});
和
var Router = Backbone.Router.extend({
routes: {'home': 'showHome},
initialize: function() {
var router = new Router();
router.on('route:showHome', function(){//do something});
}
});
目前我有第二种方式。它工作正常,我到了正确的地方..
我的路由器现已正确设置(我认为),但我的路线仍然表现得很奇怪(如下所示)。
我遇到的唯一问题是,当它改变路线时,地址栏会在多个不同的路线之间闪烁,然后才会落在右页(总是到达正确的位置)。
我正在更改页面在我的视图中使用jQuery侦听器中的window.location = '#/route';
。
$('#right_arrow').live('click', {view: that}, this.rightArrow);
...
rightArrow: function(e){
var that = e.data.view;
if(typeof window.easyUserData.fbResponse.authResponse === 'undefined') {
// Not logged in
window.location = '#/login';
} else {
// Logged in
window.location = '#/notes/right';
}
return false;
}
我一直在尝试调试以及我在window.location = '#/notes/right';
设置断点时找到的内容:
为什么会这样?它与我如何设置路由器有关吗?
答案 0 :(得分:1)
您的代码正在初始化函数中实例化一个新的路由器,这是在特定对象开始实例化时调用的。基本上,你正在创建一个不必要的路由器。
第一个例子中的代码是正确的。然后你只需:
var myRouter = new Router();