我现在在几个应用程序上遇到过这个问题,所以我想知道我是否在Backbone历史上做错了。这是情况......
我有两页,让我们说:
index.html
app.html
索引页面只是一个普通的平面HTML页面,其中包含指向app.html
的链接。在App页面上,调用Backbone.history.start()
来启动哈希状态管理,该管理用于在App页面上的两个视图之间切换,例如:
app.html#search
app.html#results
因此,在#search
和#results
页面之间来回导航效果很好。没有问题。当您尝试使用后退按钮一直返回index.html
时,会出现此问题。返回索引页面的路径涉及在app.html
处停止(无哈希状态),在该路径下,Backbone路由器尽职尽责地填充缺少的哈希状态,并将您返回app.html#search
。再次,单击后退按钮将转到app.html
,再次填充缺少的哈希状态...基本上,您现在陷入循环并且无法从页面返回。使用推送状态时会发生同样的行为。
这似乎是一个潜在的常见问题,应用会在默认网页网址上自动启动自己的路由系统。有没有人知道避免这种情况的好方法?
答案 0 :(得分:2)
问题是app.html
没有做任何事情;所以,如果导航,可能会以某种方式破坏应用程序。
在这种情况下,您可以做的不是将根路由重定向到另一个路由,而只是将其用作默认页面:
routes: {
"": "search",
"results": "results"
}