2015-10-15 33 views
1

當用戶在瀏覽器上點擊刷新時,我使用Factory(或服務)將控制器A的某些數據傳遞給控制器​​B時出現問題。我可以成功設置來自控制器A的數據並從控制器B獲取數據,但是當我處於控制器B的視圖中時,如果我點擊刷新,則丟失了數據,並且出現「未定義」的數據。 我需要使用$ localStorage解決任何想法?怎麼了?AngularJS將數據傳遞給服務,但頁面刷新時丟失數據

服務工廠是很簡單的,我有喜歡的對象:

var obj = {}; 

然後我有兩種方法:

return{ 
getObj: function(){return obj;}, 
setObj: function(data){ obj = data;} 
    }; 

我控制器A使用setObj和控制器B使用getObj。我第一次運行它,一切正常,但是當我在控制器B視圖中時,我丟失了頁面刷新的數據。

+0

這是正常行爲。當用戶點擊刷新 - 他想要新的數據。 –

回答

1

是的,你的數據在頁面刷新時會丟失,這是正常的。當您刷新頁面,服務和控制器與您當前的頁面重新加載或相關,從而導致數據被重置你的情況,這個對象

var obj = {}; 

被再次重新初始化。

您可以在cookie中存儲localStorage中的持久數據,我建議您使用localStorage,因爲它的大小也因爲如果您使用cookie,那麼對於每個ajax請求,cookie數據也會去,這是沒有建議。

+0

非常感謝。 – Lorenzo

+0

歡迎您 – Ritesh

+0

可以使用$ cookies或$ localStorage,因爲這不安全,任何人都可以在瀏覽器開發工具的資源標籤中看到,或者我只是感到困惑? – Rakeschand

0

如果用戶點擊頁面重新加載,則永遠不會在瀏覽器上持久存在。 解決此問題的方法有很多,例如WebStorage API(HTML5)。

+0

謝謝。我會用localStorage :) – Lorenzo