【问题标题】:backbone route cycling between routes before getting to the right one在到达正确的路线之前,主干路线在路线之间循环
【发布时间】:2013-01-08 12:37:57
【问题描述】:

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

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 执行
  3. 右箭头函数结束,调试器进入jquery代码
  4. 在调试器(仍在 jquery 代码中)经过五六次“跨步”后,url 更改为“#/news/right”,这是我使用的另一条路线,但不知道为什么会出现在这里
  5. 经过几次“跳过”后,我们回到了原始断点,其中 url 更改为正确的“#/notes/right”
  6. 新视图加载

为什么会这样?是否与我的路由器设置方式有关?

【问题讨论】:

    标签: javascript jquery backbone.js views router


    【解决方案1】:

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

    第一个示例中的代码是正确的。然后你只需这样做:

    var myRouter = new Router();
    

    【讨论】:

    • 是的,这是有道理的,当我写这篇文章时,我在想这个,我遵循了一个教程,但这更有意义。这并不能真正解释为什么它会暂时将另一条路由加载到 URL 中
    猜你喜欢
    • 1970-01-01
    • 2016-04-04
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    相关资源
    最近更新 更多