2013-06-26 25 views
18

所以有兩個問題。

  1. 如何角應用程序處理刷新頁面,b。從我聽到/ C,$ rootScope destroy()方法在刷新和應用程序得到重新運行和重新配置-ed,我在想,如果有一個優雅的方式來保存$ rootScope而不必將$ rootScope變量作爲字符串存儲到存儲中。

  2. 如果我加載在加載頁面上的模式一個指令的模板,是有可能配置歷史無法瀏覽,但恢復開放的模式。並由於驗證等,我不認爲有可能使用href實現相同的功能。

+0

我不明白你的第二個問題。 – John

+1

我想說的是,刷新摧毀應用程序,因此所有模塊得到重置,是否有一個服務,保存並doens't被摧毀?或者是否有辦法通過刷新來使應用程序無法更改。 – user2167582

+1

我能想到的唯一方法是使用localStorage或將該數據保存到訪問該應用程序時所需的服務器上。據我所知,沒有一種方法可以做到這一點。 – John

回答

21

如果你的網址與$routeProvider映射你的第二個問題的解決方案,你可以重新加載控制器調用$route.reload()。這刷新頁面而不破壞$ rootScope。
我已創建a plunker to show this。控制器計算頁面重新加載的次數。

+1

有沒有辦法禁用瀏覽器刷新只允許$ route.reload? – user2167582

+0

你的意思是禁用頁面刷新?我不認爲這是完全可能的。看看這個問題要求相同的事情http://stackoverflow.com/questions/2482059/disable-f5-and-browser-refresh-using-javascript – pasine

+1

@notme:這沒有爲我工作,我只是加了\t $ scope.reloadCtrl = function(){ \t \t console.log('reloading ...'); \t \t $ route.reload(); \t}這沒有解僱? –

11

可能沒有辦法通過頁面重新加載來保留任何javascript變量,$ rootScope只是一個javascript變量。

看起來您正在尋找的是一種讓您的應用程序「從同一個點開始」的方式,即在頁面重新加載時留下的方式。我建議你熟悉狀態的概念。每個應用程序都可以被視爲一組狀態和它們之間的轉換。每個用戶交互或應用程序中發生的任何其他操作都會更改應用程序的狀態或將其保持在相同的狀態。例如:單擊用戶列表中的用戶鏈接將狀態從「查看用戶列表」更改爲「查看用戶ID = 213的用戶詳細信息」,單擊「查看用戶詳細信息用戶ID = 213「將狀態更改爲」編輯id = 213的用戶「。當這些轉換髮生時,變量被分配值,視圖改變,請求被髮送出去等等。

「從同一點開始」問題需要的兩件事是狀態管理器和一種序列化和存儲狀態。

作爲除核心$ router指令之外的狀態管理器,您可以使用ui-router。至於序列化和存儲ui-router狀態的方法通過URL來完成。 ui路由器優於核心$路由器的好處是它允許嵌套狀態,並且通常更靈活。

ui-router也有它的github維基https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-open-a-dialogmodal-at-a-certain-state

2

你不能使用window.localstorage來保存你的js變量嗎?這樣,如果用戶刷新頁面以外的應用程序,你可以重新加載你的價值

相關問題