这两种处理路由的方法有什么区别?
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});
}
});
目前我有第二种方式。它工作正常,我到了正确的地方..
我的路由器现在设置正确(我认为),但我的路由仍然很奇怪(如下所示)。
我遇到的唯一问题是,当它要更改路线时,地址栏会在多条不同路线之间闪烁,然后才能到达正确的页面(总是到达正确的位置)。
我正在更改window.location = '#/route';
在我的视图中使用 jQuery 侦听器的页面。
$('#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';
:
- url 正确更改('#/notes/right')
- 返回 false 执行
- 右箭头函数结束,调试器进入 jquery 代码
- 在调试器(仍然在 jquery 代码中)五六步“跳过”之后,url 更改为“#/news/right”,这是我使用的另一条路线,但不知道为什么会出现在这里
- 再“跳过”几次后,我们回到原始断点,其中 url 更改为正确的 '#/notes/right'
- 新视图加载
为什么会这样?这与我的路由器设置方式有关吗?