【问题标题】:Backbone Route is not called不调用主干路由
【发布时间】:2012-08-17 16:03:13
【问题描述】:

我有一个使用 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。

感谢大家的回复!

阿奇姆

【问题讨论】:

    标签: javascript backbone.js backbone-routing


    【解决方案1】:

    您必须为导航方法设置触发选项,例如:

    Router.navigate("/mypath", {trigger: true})

    【讨论】:

    • 嗨@Erez Rabih,是的,我用真+假试过了。在控制台上……App.Router.navigate;……返回以下内容:function (fragment, options) { Backbone.history.navigate(fragment, options); }……而……App.Router.navigate("/mypage", {trigger: false});……返回“未定义”。
    • 这与一般使用 Backbone 无关。 我的应用程序在使用主干 0.5.3 时工作正常 - 主干 0.9.2 中的 url 匹配必须有一些变化
    【解决方案2】:

    来自fine manual

    扩展 Backbone.Router.extend(properties, [classProperties])

    从创建自定义路由器类开始。 [...] 请注意,您需要避免在路由定义中使用前导斜杠:

    我猜你只需要从routes 中删除前导斜杠,例如:

    routes: {
      'mypage': 'mypage', 
    },
    

    【讨论】:

    • 嗨 @mu 太短了,谢谢,我已经检查过了。无论有无前导和/或尾随斜杠,都找不到该路线。调用 App.Router.mypage() 工作正常,所以一定是关于路由匹配的。
    • 哎呀!你是对的,只是仔细检查了我的路线,这解决了它!顺便说一句:关于路由中前导斜杠的新行为在 0.9 版的主干更改日志中提到了 http://backbonejs.org/#changelog
    • @Achim:感谢您查看更新日志。
    【解决方案3】:

    您必须创建路由器实例。

    var router = new Router();
    router.navigate(...);
    

    【讨论】:

    • 嗨 SoWA,这不是完整的脚本,当然我用 App.Router = new Router; 实例化路由器 跳过了这个,这个例子也不能在 Backbone 0.5.3 中工作。
    猜你喜欢
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多