2013-03-06 66 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