我一直面临着骨干网的路由这个问题,想我会花足够的时间调查:骨干导航到基础URL后立即页面加载
有在玩两个URL位置:/和/后/: ID。 /页面通过/ post /:id链接到各种帖子。当我点击帖子链接时,帖子页面会加载,但骨干网会立即将网址更改为/。这不仅看起来不好,还会在错误的时间触发路由处理程序。我没有做任何特别的...这里是我的代码:
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 /后/:id为” 链接立即更改为 “localhost:8080 /”。但是,如果我在私人浏览器窗口中执行完全相同的操作,则不会出现此行为。
更新2:
鉴于我在更新1中,我疯了,从头开始:我清除4周浏览历史记录(叹气),停在我的本地服务器,并清理所有持久会话并重新部署我的应用程序。唉,它的工作!也就是说,我没有列出这个解决方案,因为它无法解释究竟发生了什么以及如何解决它。另外,它让我担心我的网站用户会发生这种情况。我无法确定这种情况是否发生,即使我这样做了,我也无法告诉他们如何解决这个问题(清除浏览器历史4周不是一种选择!)。任何人都可以阐明可能发生的事情吗?
您似乎没有为/ post /:id定义的路由。这是真的吗?或者只是在发布问题时发生错误? – 2012-08-13 19:03:08
确实如此。/post /:id链接实际上是直接从/发布到帖子页面的硬链接。事实上,帖子页面是/ post /:id,所以它不需要处理路由。也许令人困惑的是,我在描述帖子url时使用了主干术语。 – threejeez 2012-08-13 19:11:21
如果你没有用'var myRouter = new PostRouter()'来实例化'Router',那么就不会工作。我认为这不是问题的原因,但值得一提。 – fguillen 2012-08-13 19:58:59