我目前正在爲我的SPA使用Backbone路由器。這類型的作品不錯,但我有一些小問題:備用到沒有散列回退和更好的回退/轉發狀態支持的Backbone路由器?
的問題是 - 我想要麼有pushState
導航或沒有,意思是 - 應用程序狀態被執行(當我通過「初始」或者我通過JS觸發路由),但地址欄不會改變。我不希望IE9的hashChange回退。如果IE9沒有獲得後退按鈕和改變的地址欄,它會工作得很好,但仍然保持應用程序內的導航狀態。然後,我可以向用戶顯示可以書籤的URL,服務器將路由該頁面,並且應用程序狀態將根據初始URL進行引導。在應用內導航期間,地址欄不會改變,這是我願意接受的一種折中方案。
我的另一個問題是我使用navigate(url, {trigger: true})
來截取我的HREF,而後退按鈕不起作用(什麼都不做)。但我真的需要改變前進/後退導航的應用程序狀態,即使它被重建爲特定的URL - 我寧願重建狀態。
我可以在路由器方面使用哪些選項?就像我說的,我不想有散列回退(意思是 - 我只想在應用程序中有一種表示URL的方式)。
我應該使用什麼? Director.js? History.js?似乎有相當多的路由器/歷史庫在那裏,但哪一個是最接近我正在尋找?
嘗試http://millermedeiros.github.io/crossroads.js – mfirry
嗨@Julik,當你說'地址欄不會改變'這意味着,如果你寫最初的路徑例如'domain.com/page/one'它會渲染內容,並且會永遠停留在那個路徑中?即使你導航到不同的頁面? –
我的意思是在IE上,我會攔截對'a'元素的點擊並改變應用程序狀態以響應,但它不會被記錄在瀏覽器歷史記錄中 - 並且URL將保持在頁面加載時的位置。 – Julik