10

我正在使用 Ember.js 进行实验,并设置了一个小应用程序,用户可以在其中登录和注销。当用户注销时,我想清除数据存储中当前缓存的所有记录。有没有办法做到这一点,还是我必须强制浏览器重新加载页面?

4

7 回答 7

18

我知道这个问题是从 2013 年开始的。但是自从 Ember Data 1.0.0-beta.17(2015 年 5 月 10 日)以来,有一种清除数据存储的简单方法:

store.unloadAll()

(更多信息:http: //emberigniter.com/clear-ember-data-store/

于 2015-07-16T15:11:36.370 回答
6

看起来,截至今天,仍然没有完全强制商店清理的通用方法。最简单的解决方法似乎是遍历所有类型(person,...)并执行以下操作:

store.unloadAll('person');

如此处所见

于 2014-06-25T14:51:17.433 回答
4

Ember-Data 尚不支持清除数据存储。Github 跟踪器上有一个关于此的未解决问题。

于 2013-02-17T18:20:14.643 回答
1

更清洁和通用的方法。只需扩展或重新打开商店并添加这样的清晰方法即可。

DS.Store.extend({
   clear: function() {
    for(var key in this.typeMaps)
    {
      this.unloadAll(this.typeMaps[key].type);
    }
  }
});

于 2014-10-16T16:50:25.623 回答
0

有:

App.reset();

但这不仅仅是清除数据存储,我们偶尔会看到store.pushPayload尝试将数据推送到标记为从调用中销毁的对象上的错误App.reset();

我们一直在使用:

store.init();

这只是创建了一个新的空商店并且效果很好,但不幸的是它是一种私有方法

于 2014-11-15T07:17:10.507 回答
0

现在可以使用store.destroy(). 它会卸载所有记录,但也可以立即用于重新加载新记录。我已经确认了这一点1.0.0-beta.15。它似乎不在文档中,但它一直在为我工作。

另一种方法是迭代 store's typeMapsand running store.unloadAll(typeMap.typeName),但我不确定这是否完全必要。

于 2015-03-18T06:13:17.200 回答
-1

删除模型中的记录。这个deleteOrgsjsBin :

deleteOrgs: function(){
  var len;
  while(len = this.get('model.length')) {
    // must delete the last object first because 
    // this.get('model.length') is a live array
    this.get('model').objectAt(len-1).deleteRecord();
  }
  this.get('store').commit();
}

(截至 2013 年 8 月,目前存在延迟删除数据的问题。)

于 2013-08-09T03:16:42.177 回答