簡體   English   中英

瀏覽器刷新后,Ember存儲(使用localstorage適配器)數據丟失

[英]Ember store (using localstorage adapter) data is lost after browser refresh

我將Ember應用程序配置為與localstorage_adapter一起運行。

我是Ember的新手,也許我還不了解其所有細節。 不過,據我了解,刷新瀏覽器時,余燼存儲數據不應丟失。 顯然,本地存儲不受瀏覽器刷新的影響。

這是發生的情況:1.登錄后,我從服務器獲取數據,並使用store.push()或store.pushMany()進行存儲。2.播放應用程序。3.有時點擊瀏覽器刷新(或在Android手機上,當我按下主頁按鈕時,瀏覽器關閉,當我從正在運行的應用程序窗口中再次打開它時,它會打開並默認刷新。)4.我所在的頁面被弄亂了

例如,我在頁面上顯示用戶名,問題和可能的答案的列表。 請注意,商店中有20多個問題。 我通過使用Ember Inspector知道這一點。 我點擊刷新,現在商店有1個用戶實體(登錄的用戶),這很好,只有1個問題(一點都不好),在頁面上顯示了一個,答案存儲區為空。 所有其他實體(與此頁面無關)也都消失了! 因此,我在網頁上看到的是用戶名和問題的文本,沒有答案,也沒有前進的方法。

這應該發生嗎? 是否清除了“內存中”存儲,而不從本地存儲中重新填充?

謝謝!

這應該發生嗎? 是否清除了“內存中”存儲,而不從本地存儲中重新填充?

是的,應該會發生。 要了解原因,請首先記住瀏覽器中的localStorage被視為服務器 對於Ember-Data,您的localStorage和帶有REST API的Rails服務器之間絕對沒有區別。 Ember-Data將它們都視為異步數據存儲,並通過適配器與它們進行通信。 LocalStorageAdapter沒什么不同。

這是什么意思? 這意味着您的商店只會填充您明確要求的記錄。 就像Ember-Data在啟動時不會嘗試從Rails服務器獲取所有記錄一樣,它也不會嘗試在啟動時從localStorage獲取所有記錄。 這是設計使然。 Ember-Data不會播放收藏夾。 它平等地對待所有適配器。

為了用localStorage中的條目重新填充商店,請像在任何其他情況下一樣使用商店的find()方法。 盡管仍然是異步的,但調用速度很快。

另外,正如比靈頓所說,如果要將數據放入localStorage,則必須顯式保存數據。 商店不會自動將其放置在那里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM