2013-10-08 41 views
0

在我迪朗達爾的應用程序,我有一個搜索頁面 - 我想:迪朗達爾 - 從「返回」按鈕進入判別與導航()

  • 負載時,它從加載一個乾淨的搜索頁面菜單(router.navigate('#/search')
  • 當從搜索頁導航到某個項目時,然後使用後退按鈕,這應該返回到原始搜索結果&條件。

我還將我的搜索條件&結果存儲爲一個(應用程序範圍內的)單例,它通過RequireJS注入視圖模型。

我可以:區分用戶如何進入頁面?我可以看到activate()生命週期調用在兩種入口方法下都被觸發。

+0

是的,當你這樣做時,目前沒有工作? –

回答

1

如果您想知道用戶是否通過點擊您應用中的鏈接/按鈕或通過輸入網址/返回按鈕訪問搜索頁面,我會做的是在用戶點擊時提出事件在鏈接/按鈕和搜索頁面上檢查事件是否已經引發或者在router.navigate中傳遞了一些參數。

1

我最近一直在做一些工作,區分用戶在應用程序內點擊並從瀏覽器中選擇後退或前進按鈕。如果使用router.navigate()在Durandal應用程序中導航,則router.explicitNavigation標誌設置爲true。但是,當'router:navigation:complete'事件中的標誌被設置爲false時,您希望在'router:route:activating'事件中的'router:navigation:complete'事件之前捕獲該事件。

底線是如果您使用router.navigate瀏覽應用程序,則router.explicitNavigation屬性將設置爲true,並且如果使用瀏覽器路由器中的後退/前進按鈕觸發導航,則將顯式導航設置爲假。

在實際情況下,您可能甚至不需要執行router.navigate()來區分應用內導航和瀏覽器後退/前進,因爲Durandal的路由器模塊監聽所有'a'標籤,單擊文檔級別並設置explicitNavigation標誌爲true。但是我沒有完全測試過。