在到达正确路线之前,路线之间的骨干路线循环

时间:2013-01-08 00:39:09

标签: javascript jquery backbone.js views router

这两种处理路线的方法有什么区别?

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';设置断点时找到的内容:

  1. 网址更改正确('#/ notes / right')
  2. return false execution
  3. 右箭头功能结束,调试器进入jquery代码
  4. 在调试器中五步或六步之后(仍在jquery代码中)url更改为'#/ news / right',这是我使用的另一条路线,但不确定它为什么会出现在这里
  5. 再过几步后,我们回到原来的断点,其中url变为正确的'#/ notes / right'
  6. 新视图加载
  7. 为什么会这样?它与我如何设置路由器有关吗?

1 个答案:

答案 0 :(得分:1)

您的代码正在初始化函数中实例化一个新的路由器,这是在特定对象开始实例化时调用的。基本上,你正在创建一个不必要的路由器。

第一个例子中的代码是正确的。然后你只需:

var myRouter = new Router();