2014-03-19 60 views
1

我正在構建一個3頁的嚮導配置應用程序。每個頁面都有相同的MasterController但不同的html模板。每個html模板都有一個不同的控制器,比如ControllerOne,ControllerTwo和ControllerThree。關於在哪裏存儲和保存角度數據的建議

我通過MasterController加載數據,我希望數據和用戶所做的任何更改都暫時存儲,直到最終頁面上的保存&完成步驟。麻煩在於用戶瀏覽頁面時,每次調用MasterController時,每次都會讀取數據並覆蓋用戶的更改。

我想過將這些數據附加到服務或rootScope上,但數據初始化仍然發生在MasterController中,因此在加載每個視圖時數據仍然會被覆蓋。

有關如何創建此功能或重構我的應用程序以支持此功能的任何建議?

編輯:

要明確的服務問題。我不知道在哪裏初始化它。如果我在控制器1,2或3中執行此操作,則每次視圖更改時我的數據都會重新初始化,以至於無法正常工作。我無法在app.run()中執行它,因爲我需要訪問MasterController以獲取必要的ID來發出我的HTTP請求。我無法在MasterController中執行此操作,因爲這也是在每個頁面切換器上調用的。

理想情況下,我會在視圖內有一個視圖,以便只有內部視圖發生變化。然而,角度不支持嵌套視圖,我試圖找到解決這個問題的方法,而不必使用angularUI。

+0

我說服務或本地存儲 –

+1

只需將您的數據初始化代碼移動到服務中並將數據存儲在那裏,您還可以定義使用$ http將數據最終發送到服務中的方法,並將其注入到控制器中在適當的地方稱呼它http://plnkr.co/edit/ABQsAxz1bNi34ehmPRsF?p=preview。 – shaunhusain

回答

0

爲了避免每次頁面更改和覆蓋用戶數據時從服務器加載的數據,我使用「擴展」函數(如jQuery's)來擴展服務器數據,並在每個負載上使用用戶數據。頁面更改會調用我的服務(存儲臨時數據)以將數據保存在那裏,最後的「保存並完成」按鈕會將服務中的數據推送到服務器。