【问题标题】:Ember store (using localstorage adapter) data is lost after browser refresh浏览器刷新后,Ember 存储(使用本地存储适配器)数据丢失
【发布时间】:2014-10-28 23:43:17
【问题描述】:

我将 Ember 应用配置为使用 localstorage_adapter 运行。

我是 Ember 的新手,可能我还没有掌握它的所有细节。尽管如此,据我了解,当您刷新浏览器时,ember 存储数据不应该丢失。显然本地存储不受浏览器刷新的影响。

会发生这种情况: 1. 登录后,我从服务器获取数据并使用 store.push() 或 store.pushMany() 存储它 2. 玩转应用程序 3.在某个时候点击浏览器刷新(或者在我的Android手机上,当我点击主页按钮时,浏览器关闭,当我从正在运行的应用程序窗口再次打开它时,它默认打开并进行刷新) 4. 我所在的页面乱七八糟

例如,我在显示用户名、问题和可能答案列表的页面上。请注意,商店中有 20 多个问题。我通过使用 Ember Inspector 知道这一点。我点击刷新,现在商店有 1 个用户实体(登录用户),这很好,只有 1 个问题(一点也不好),页面上显示的那个,答案商店是空的。所有其他实体(与此页面无关)也消失了!所以我在网页上看到的是用户名和问题的文字,没有答案,没有办法继续前进。

这应该发生吗? “内存中”存储被清除并且没有从本地存储重新填充?

谢谢!

【问题讨论】:

  • 您是否将记录保存在代码中的任何位置?

标签: ember.js local-storage ember-data


【解决方案1】:

这应该发生吗? “内存中”的存储被清除,而不是从本地存储重新填充?

是的,它应该发生。要了解原因,首先要记住浏览器中的 localStorage 被视为服务器。对于 Ember-Data,您的 localStorage 和具有 REST API 的 Rails 服务器之间绝对没有区别。 Ember-Data 将它们都视为通过适配器与之通信的异步数据存储。 LocalStorageAdapter 也不例外。

这是什么意思?这意味着您的商店只会填充您特别请求的记录。正如 Ember-Data 在启动时不会尝试从 Rails 服务器获取所有记录一样,它不会在启动时尝试从 localStorage 获取所有记录。 这是设计使然。 Ember-Data 不会播放收藏夹;它平等对待所有适配器。

要使用来自 localStorage 的条目重新填充您的商店,请像在任何其他情况下一样使用商店的 find() 方法。尽管仍然是异步的,但调用速度很快。

此外,正如 Beerlington 所提到的,如果您希望数据进入 localStorage,则必须明确保存数据。商店不会自动将其放置在那里。

【讨论】:

  • 好的,这意味着如果我刷新,路由将被重新加载并调用模型钩子。我返回 store.findAll('question')。在我看来,我开始重复这些问题。问题是一个问题有很多答案,但它们没有被加载。在我看来,我看不到它们。模型还可以一个问题有很多答案。我错过了什么?
  • 如果问题hasMany 回答,您需要单独加载它们。通常在模板中使用它们会为您加载它们。如果您在加载答案或将它们放入模板时遇到问题,请随时发布另一个更具体的问题。
猜你喜欢
  • 2019-05-10
  • 1970-01-01
  • 2013-08-09
  • 1970-01-01
  • 2014-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多