2013-12-09 46 views
-1

對不起,我想不出一個好的標題。精確掌控歷史在骨幹中的推動

我想有默認的pushstate行爲,但在某些情況下有自定義行爲。 所以我希望所有的鏈接都是正常/登錄,/註冊等。如果用戶在主頁上,我希望這些鏈接通過主幹進入各自的頁面。但是,如果用戶是一個像/ product/123這樣的特殊頁面,那麼我們將向他們展示一個模式,雖然href表示「/ login」,但我想簡單地調用路由函數來顯示登錄頁面,將#login附加到url(即「/ product/123#login」)並添加帶有hash-tag'd url的推送狀態。

這個背後的原因是,有人可能在/ product/123上,點擊/登錄,突然決定他們想分享產品並獲得產品網址,然後退出習慣,返回查看產品[即。關閉登錄模式],並按預期工作。

以上可能嗎?從我一直在讀的內容來看,backbone的歷史模塊是一個集合,並且忘記了它的一些東西,而且我無法通過Backbone文檔看到一條路。

回答

0

這可能不是一個好主意,讓你的模態在一條路線。對於大多數用途來說,模式窗口是當前頁面上的彈出窗口,它不是實際的視圖更改,而是視圖附加到用戶正在做的任何位置的頂部(從用戶不能繼續他在做的事情,直到他處理出現的任何事情)。

在這方面,/登錄路線可能不應該是一個模態,而是一個完整的頁面視圖與登錄表單。然後在你的其他頁面上,我假設你有一個佈局視圖,其中包含一個呈現「登錄模式」按鈕的子視圖,對吧?當點擊這個按鈕時,你可以處理模態渲染/附加到正文(或者是)。

在這種情況下,不需要URL更改,所以Backbone路由器不會涉及。我的觀點是,您所描述的用例只有在共享一個URL(/ product/123#login)時纔有意義,它將在產品/ 123頁面上重新打開登錄模式(而不是其他產品)...我認爲這不是一個非常有用的功能!在我看來(這是非常有爭議的,我確定),登錄模式並不是應該有一個特定的路由,因爲它不是一個實際的穩定的應用程序路徑,如果這是有道理的。

+0

這是有道理的,但是如果您點擊「登錄」,然後點擊返回,您決定不想登錄。 在正常情況下,您最終將遠離您所在的產品頁面,因爲沒有彈出登錄頁面的歷史記錄。 其實,我認爲最好的方法是簡單地路由到/登錄,同時顯示模式。用戶可以返回或關閉模式以獲取鏈接。 –