我将Ember App配置为使用localstorage_adapter运行。
我是Ember的新手,可能,我还没有掌握所有细节。不过,根据我的理解,当您刷新浏览器时,不应丢失余烬存储数据。显然,本地存储不受浏览器刷新的影响。
这是发生的事情: 1.登录后,我从服务器获取数据并使用store.push()或store.pushMany()存储它 2.玩弄应用程序 3.在某些时候点击浏览器刷新(或者当我点击主页按钮时在我的Android手机上,浏览器关闭,当我从正在运行的应用程序窗口再次打开它时,它会打开并默认刷新) 4.我所在的页面搞砸了
例如,我在页面上显示用户名,问题和可能答案列表。请注意,商店内有20多个问题。我通过使用Ember Inspector知道这一点。我点击刷新,现在商店有1个用户实体(记录的用户),这是好的,只有1个问题(根本不好),页面上显示的那个,答案存储是空的。所有其他实体(与此页面无关)也消失了!所以我在网页上看到的是用户名和问题的文字,没有答案,没有办法继续前进。
这应该发生吗? “内存”商店被清除,而不是从本地存储中重新填充?
谢谢!
答案 0 :(得分:0)
这应该发生吗? “内存”商店被清除,而不是从localstorage重新填充?
是的,它应该发生。要了解原因,请首先记住浏览器中的localStorage是作为服务器。对于Ember-Data,localStorage和带有REST API的Rails服务器之间绝对没有区别。 Ember-Data将它们视为通过适配器与之通信的异步数据存储。 LocalStorageAdapter也不例外。
这是什么意思?这意味着您的商店只会填充您特别要求的记录。就像Ember-Data没有尝试在启动时从Rails服务器获取所有记录一样,它也不会尝试在启动时从localStorage获取所有记录。 这是设计的。 Ember-Data不播放收藏夹;它平等对待所有适配器。
为了使用localStorage中的条目重新填充商店,请使用商店的find()
方法,就像在任何其他情况下一样。虽然仍然是异步的,但调用速度很快。
此外,正如Beerlington所提到的,如果您希望将数据放入localStorage,则必须明确保存数据。商店不会自动将它放在那里。