2012-12-09 77 views
0

我寫的東西就像一個包含多個步驟的註冊過程,我想讓它成爲一個類似單頁的系統,所以在學習了一些Backbone.js之後,我就是我的選擇。Backbone.js:如何利用router.navigate來操縱瀏覽器歷史記錄?

每次用戶完成當前步驟時,他們都會點擊我創建的下一個按鈕,然後使用router.navigate方法更新網址,並加載下一頁的內容並進行一些花哨的轉換JavaScript的。

結果是,URL被更新,頁面沒有被刷新,給用戶帶來了流暢的體驗。但是,當用戶點擊瀏覽器的後退按鈕時,URL會更新爲上一步的內容,但內容保持不變。我的問題是通過什麼方式捕捉這樣的事件,並且當前加載上一步的內容並將其呈現給用戶?或者甚至更好,我可以依靠瀏覽器緩存來加載以前加載的頁面嗎?

編輯:特別是,我正在嘗試類似於this article中提到的內容。

回答

1

您不應該使用route.navigate,而是讓路由器根據當前路由決定顯示哪個窗體。

爲例:

在當前的註冊過程的形式鏈接:

<a href="#form/2" ... 
路由器定義

routes:{ 
    "form/:formNumber" : "gotoForm" 
}, 

gotoForm:function(formNumber){ 
// the code to display the correct form for the current url based on formNumber 
} 

,然後用Backbone.history.start()來引導路由

+0

非常感謝你的回覆,但我真的以一種我不喜歡的方式來做這件事螞蟻的存在標籤。特別是我試圖在這篇文章中的東西:http://artsy.github.com/blog/2012/06/25/replacing-hashbang-routes-with-pushstate/ –

+0

經過一些工作,我想我已經想通了它出來了,我需要調用導航觸發器:true來觸發路由器的功能,更新內容。沒有哈希標籤! –