Backbone.history.start()阻止退出页面的后退按钮

时间:2013-03-06 14:43:49

标签: javascript backbone.js browser-history

我现在在几个应用程序上遇到过这个问题,所以我想知道我是否在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,再次填充缺少的哈希状态...基本上,您现在陷入循环并且无法从页面返回。使用推送状态时会发生同样的行为。

这似乎是一个潜在的常见问题,应用会在默认网页网址上自动启动自己的路由系统。有没有人知道避免这种情况的好方法?

1 个答案:

答案 0 :(得分:2)

问题是app.html没有做任何事情;所以,如果导航,可能会以某种方式破坏应用程序。

在这种情况下,您可以做的不是将根路由重定向到另一个路由,而只是将其用作默认页面:

routes: {
  "": "search",
  "results": "results"
}