在my Ember.js应用程序中的localStorage.clear()或deleteRecord()之后,本地存储数据将恢复

在my Ember.js应用程序中的localStorage.clear()或deleteRecord()之后,本地存储数据将恢复,ember.js,local-storage,Ember.js,Local Storage,我正在观察localStorage.clear()或deleteRecord()()在我的余烬应用程序中被调用后的数据恢复 按照以下步骤复制问题: 打开chrome web开发-->资源-->本地存储-->“” 在此页面上添加一些Org,并观察它们是否已添加到本地存储 单击“清除本地存储”(案例1)或“删除组织数据”(案例2),观察本地存储是否已清除。不要刷新页面。(数据仍保留在页面上,但这没关系,因为我们尚未刷新页面。) 再添加一个组织,并观察所有已删除的组织是否已恢复(案例1)或LS是否未删

我正在观察
localStorage.clear()
deleteRecord()
()在我的余烬应用程序中被调用后的数据恢复

按照以下步骤复制问题:

  • 打开chrome web开发-->资源-->本地存储-->“”
  • 在此页面上添加一些Org,并观察它们是否已添加到本地存储
  • 单击“清除本地存储”(案例1)或“删除组织数据”(案例2),观察本地存储是否已清除。不要刷新页面。(数据仍保留在页面上,但这没关系,因为我们尚未刷新页面。)
  • 再添加一个组织,并观察所有已删除的组织是否已恢复(案例1)或LS是否未删除(案例2)
  • 因此,当您刷新页面时,所有已删除的数据都会重新出现
  • 问题:

  • 为什么会发生这种数据复活
  • 如何使localStorage.clear()在清除后即使不刷新(手动或调用
    location.reload
    )也能工作

  • 稍后编辑以包括deleteRecord()

    使用
    清除
    擦除本地存储即可。是您的本地存储适配器(LSAdapter)在创建新记录时保持状态并重新填充以前清除的本地存储。这样做是因为记录存储在字符串中,
    LSAdapter
    不知道您是否更改了它,所以它总是保存所有记录以确保同步


    考虑销毁所有记录,而不是清除本地存储。

    九月份版本的Ember Data/Local Storage解决了这个问题

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

    由于余烬数据即将发生变化,该问题自2013年8月起暂停

    解决此问题的方法是清除本地存储和余烬数据


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

    没问题。对不起,伙计,没问题我也在学习。这是否意味着LSAdapter不会每次都直接从本地存储获取数据?字符串是否存储在
    存储
    中?在读取LSAdapter代码时,您可以看到
    本地存储
    方法仅在两种情况下被调用:1)在
    \u saveData
    中,将所有记录“序列化”并作为字符串放入本地存储;2)在
    \u loadData
    中,从本地存储获取字符串并填充LSAdapted
    \u数据
    属性与您的记录。在LSAdapter初始化期间,
    \u loadData
    只被调用一次(
    init
    方法),谢谢!还能用吗?它不起作用,我找不到中定义了
    destroy
    的位置。余烬模型有一个方法
    destroyRecord
    ,可以调用您的记录。然后,您必须在您的商店中调用
    commit
    ,以使更改持久化。它在你的jsbin上运行良好。(仅供参考,它是
    deleteRecord
    ,也许你可以编辑你的评论。)