2014-04-29 64 views
0

我有幾個服務,我試圖用它來在angularjs中的多部分表單的元素之間共享數據。一個例子是維護一系列訪問狀態的服務,當用戶點擊提供的後退按鈕時,最後一個狀態被彈出,並且頁面與所有相關字段一起被重定向。Angularjs - 處理與服務有關的後退和前進按鈕

但是,如果用戶在瀏覽器上使用後退按鈕,那麼我的服務仍然認爲它正在進行以下步驟。例如。我在B,我打回瀏覽器,模板加載頁面A.但是,我目前的步驟是在服務B,我的下一步是C,這會導致各種問題。

我想支持後退/前進,但同時處理這些問題。有什麼建議麼?

+0

聽起來像是正確的事情。不應該後退按鈕回到步驟A? – TheVillageIdiot

+0

是的狀態改變,但處理訪問狀態和當前狀態/下一個狀態的底層服務不反映這一點。所以我處於狀態A,但邏輯認爲我處於狀態B,所以當我點擊下一步時,會出現錯誤,或者我會跳到狀態C – SMC

回答

0

最終我想出瞭如何用ui-router和$ stateParams代替數組來實現這個功能。

我使用運行函數偵聽狀態更改使用$ rootScope。$ on('stateChangeStart'),如果toState名稱是我的動態狀態,然後我測試從和到步驟,並查看它們是否有效基於我有一個服務的路由表。如果由於某些原因這些步驟無效,那麼我將清除數據並重定向到表單的第一步。

其中的一部分是處理刷新,以便測試這個檢查,如果fromState.url =「^」並設置一個rootScope變量。如果你的變量不存在,fromstate是「^」,那麼你應該重定向。這可以防止刷新破壞實施,也可以無限刷新循環