Backbone router.navigate 不重定向

Backbone router.navigate doesn't redirect

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

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

    Backbone.history.start(pushState: true)

然后在我的视图中,当我单击一个按钮时,我会:

router.navigate('/profile')

我也试过

router.navigate('/profile', true)

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

我在 backbone 路线上做错了什么?以前用过这个方法,现在不知道为什么不行了

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

Backbone router.navigate doesn't redirect

不,不是。这不是 router.navigate 甚至 所做的 。与重定向无关,是为了更新地址栏。

The new url is always correctly show in the navigation bar, but it doesn't redirect to the new page...only show the new url in the navigation bar.

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

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

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

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

我们很幸运地找到了这个 post Backbone: Refresh the same route path for twice 并且我们实际上只能使用所提供的解决方案的组合来使其工作:

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

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