我一直在面对Backbone路由的这个问题,并认为我花了足够的时间调查:
这里有两个网址:/和/ post /:id。 /页面通过/ post /:id链接到各个帖子。当我点击帖子链接时,帖子页面加载,但骨干立即将URL更改为/。这不仅看起来很糟糕,而且还会在错误的时间触发路由处理程序。我没有做任何特别的事......这是我的代码:
PostRouter = Backbone.Router.extend({
routes : {
"" : "doHome"
},
initialize : function() {
},
doHome : function() {
// do some stuff before navigating
window.location = "/";
}
})
...
var router = new PostRouter();
Backbone.history.start({ pushState: Modernizr.history });
同样,在帖子页面加载后立即调用doHome函数。显然,这会导致网站导航回主页。我显然可以删除对window.location的调用以防止这种情况,但是url仍然会更新到根URL,这是不可接受的。
提前致谢!
更新1:
如果我直接转到“localhost:808 / post /:id”,则网址会立即更改为“localhost:8080 /”。但是,如果我在私有浏览器窗口中执行完全相同的操作,则不会发现此行为。
更新2:
鉴于我在更新1中发现的内容,我发疯了并从头开始:我清除了4周的浏览历史记录(叹息),停止了我的本地服务器并清理了所有持久会话并重新部署了我的应用程序。唉,它奏效了!也就是说,我没有将此列为解决方案,因为它无法解释究竟发生了什么以及如何解决它。此外,它让我担心我的网站用户发生这种情况。我无法分辨这种情况,即使我这样做了,也无法告诉他们如何解决这个问题(清除4周浏览器历史不是一种选择!)。任何人都可以对可能发生的事情有所了解吗?
答案 0 :(得分:0)
为什么不尝试添加
console.log(Backbone.history.handlers);
最后看看你的溃败如何被添加到Backbone.history。这可能会有所启发。