3

我现在在一些应用程序上遇到了这个问题,所以我想知道我是否对 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(无散列状态)处的停止,在该处,骨干路由器尽职尽责地填充缺失的散列状态,使您回到app.html#search. 同样,单击后退按钮将转到app.html,这会再次填充缺少的哈希状态...基本上,您现在陷入了循环,无法从页面返回。使用推送状态时也会发生同样的行为。

对于在默认页面 URL 之上自动启动自己的路由系统的应用程序,这似乎是一个潜在的常见问题。有谁知道避免这种情况的好方法?

4

1 回答 1

2

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

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

routes: {
  "": "search",
  "results": "results"
}
于 2013-03-06T14:53:40.163 回答