Backbone router.navigate 不会重定向

Backbone router.navigate doesn't redirect

本文关键字:重定向 navigate router Backbone      更新时间:2023-09-26

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

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' 它会正确重定向。

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

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

主干路由器导航不会重定向

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

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

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

如果要重定向到新页面,则应使用window.location.href = '/profile'

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

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

我们

很幸运地找到了这篇文章 骨干网:刷新相同的路由路径两次,我们实际上只能使用所提出的解决方案的组合来使其工作:

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

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