2013-03-06 68 views
3

我现在已经在几个应用程序中遇到了这个问题,所以我不知道我是否在Backbone历史记录中出现了问题。这里的情况...Backbone.history.start()阻止返回按钮离开页面

我有两页,让我们说:

index.html 
app.html 

索引页只是一个链接到app.html正常的,扁平的HTML页面。在应用程序页面,Backbone.history.start()被称为火起来的散列状态管理,这是用来应用页面上的两个视图之间切换,说:

app.html#search 
app.html#results 

因此,导航来回#search#results页作品之间大。那里没有问题。当您尝试使用后退按钮一直回到index.html时,会发生此问题。返回到索引页面的路径包括在app.html(无散列状态)的停止位置,在该位置Backbone路由器忠实地填充缺失的散列状态,将您重新放回app.html#search。同样,单击后退按钮将转到app.html,再次填充缺失的散列状态......基本上,您现在陷入循环,无法从页面返回。使用推送状态时会发生相同的行为。

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

回答

2

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

在这种情况下,你可以做的是不是重定向的根路径到另一个,只是用它作为默认的页面:

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

感谢,没想到可以把它像。非常有意义的是,基本URL需要成为起点。不幸的是,我们的UX规范通常是围绕有条件的入口点逻辑定制的,这基本上是导致此问题的原因。我将准备在未来将这个问题扼杀在萌芽状态。 – bigmac 2013-03-06 15:46:29