4

在我的 ember 应用程序中调用localStorage.clear()deleteRecord()jsbin 示例)之后,我正在观察数据复活。

请按照以下步骤复制问题:

  1. 打开 chrome web dev --> 资源 --> 本地存储 --> " http://jsbin.com "
  2. 在此页面上添加一些 orgs 并观察它们是否已添加到本地存储中
  3. 点击“清除本地存储”(案例1)或“删除组织数据”(案例2),观察本地存储是否被清除。不要刷新页面。(数据仍然保留在页面上,但这没关系,因为我们还没有刷新页面。)
  4. 再添加一个 org 观察所有被删除的 org 都复活了(案例 1)或者 LS 没有被删除(案例 2)
  5. 因此,当您刷新页面时,所有已删除的数据都将恢复。

问题:

  1. 为什么会发生这种数据复活?
  2. 即使清除后没有刷新(手动或调用),如何使 localStorage.clear() 工作location.reload

稍后编辑以包括 deleteRecord()

4

2 回答 2

2

9 月版本的 Ember 数据/本地存储中修复了问题。在这个 SO Answer 中使用 jsbin 查看它的实际效果

在与 IRC 上的人们进行了一些讨论后,目前 LSAdapter 或 Ember Data 中存在一个导致数据徘徊的错误。

由于 Ember Data 即将发生变化,该问题已于 2013 年 8 月暂停。

此问题的解决方法是清除本地存储以及 ember 数据。看到它在这个 jsbin 中工作

location.reload()或者,您可以在清除本地存储后立即调用以显示新数据。

于 2013-08-09T02:56:39.997 回答
1

用工程擦除 localStorageclear就可以了。是您的本地存储适配器 (LSAdapter) 在创建新记录时保持状态并重新填充先前清除的 localStorage。这样做是因为记录存储在一个字符串中并且LSAdapter不知道您是否更改了它,因此它始终保存所有记录以确保它是同步的。

考虑销毁所有记录而不是清除 localStorage。

于 2013-08-08T20:29:42.000 回答