【问题标题】:Backbone router.navigate doesn't redirect骨干网 router.navigate 不重定向
【发布时间】:2015-03-15 00:06:13
【问题描述】:

老实说,我觉得问这个问题有点愚蠢,因为应该是一个非常简单的事情...... 在我的应用程序初始化中,我有:

window.myApp =
  Models: {}
  Collections: {}
  Views: {}
  Routers: {}
  initialize: ->
    window.router = new Backbone.Router

    Backbone.history.start(pushState: true)

然后在我的视图中,当我点击一个按钮时,我会这样做:

router.navigate('/profile')

我也试过了

router.navigate('/profile', true)

现在...我知道这不是使用主干路由的最佳方式,但我需要我的 rails 应用程序管理路由,并且我仅将主干路由用于具有路由历史记录... 如果我做 window.href = '/profile' 它会正确重定向。

我在主干路由上做错了什么?我以前用过这种方式,但我不知道为什么现在它不再起作用了。

编辑:新网址始终正确显示在导航栏中,但不会重定向到新页面...仅在导航栏中显示新网址。

【问题讨论】:

    标签: javascript backbone.js backbone-routing


    【解决方案1】:

    Backbone router.navigate 不重定向

    不,它没有。这不是router.navigate 甚至所做的。跟重定向无关,是用来更新地址栏的。

    新的 url 总是正确地显示在导航栏中,但它不会重定向到新页面...只在导航栏中显示新的 url。

    是的,这正是 router.navigate 被记录在案的。这就是它的明确目的。您可以使用它来更新 URL 以反映页面的当前状态,而不是将页面重定向到其他内容。

    如果你想重定向到一个新页面,你应该使用window.location.href = '/profile'。

    如果您想更新地址栏然后触发新一轮的 Backbone 路由,请使用 router.navigate('/profile', { trigger: true });,但同样,这不是 Backbone 的工作方式。

    【讨论】:

    • 谢谢...现在我明白了:)
    【解决方案2】:

    我们遇到了这个问题,发现有时甚至 window.location.href 也不起作用。

    我们很幸运能找到这篇帖子Backbone: Refresh the same route path for twice,实际上我们只能通过结合所提供的解决方案来使其工作:

    1. 导航到不存在的路线:Backbone.history.navigate('xpto');

    2. 然后使用:window.location.href = location;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-10
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多