老实说,我觉得这个问题有点愚蠢,因为这应该是一件非常简单的事情...... 在我的app init中,我有:
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',它会正确重定向。
我对骨干路线做错了什么?我以前用这种方式,但我不知道为什么它现在不再起作用了。
编辑:新网址始终在导航栏中正确显示,但不会重定向到新网页...仅在导航栏中显示新网址。
答案 0 :(得分:4)
Backbone router.navigate没有重定向
不,它没有。这不是router.navigate
甚至 的内容。它与重定向无关,而是用于更新地址栏。
新网址始终在导航栏中正确显示,但不会重定向到新网页...只会在导航栏中显示新网址。
是的,完全记录了router.navigate
要做的事情。这是它的明确目的。您可以使用它来更新网址以反映网页的当前状态,不将网页重定向到其他位置。
如果您想重定向到新页面,则应该使用window.location.href = '/profile'
。
如果您想更新地址栏然后触发新一轮的Backbone路由,请使用router.navigate('/profile', { trigger: true });
,但同样,那不是Backbone的工作方式。
答案 1 :(得分:0)
我们遇到了这个问题,并发现有时甚至 window.location.href 也无效。
我们很幸运地发现了这篇文章Backbone: Refresh the same route path for twice,我们实际上只能使用所提出的解决方案的组合来使其工作:
导航到不存在的路线:Backbone.history.navigate('xpto');
然后使用:window.location.href = location;