我正在使用 Ember.js 进行实验,并设置了一个小应用程序,用户可以在其中登录和注销。当用户注销时,我想清除数据存储中当前缓存的所有记录。有没有办法做到这一点,还是我必须强制浏览器重新加载页面?
7 回答
我知道这个问题是从 2013 年开始的。但是自从 Ember Data 1.0.0-beta.17(2015 年 5 月 10 日)以来,有一种清除数据存储的简单方法:
store.unloadAll()
(更多信息:http: //emberigniter.com/clear-ember-data-store/)
Ember-Data 尚不支持清除数据存储。Github 跟踪器上有一个关于此的未解决问题。
更清洁和通用的方法。只需扩展或重新打开商店并添加这样的清晰方法即可。
DS.Store.extend({
clear: function() {
for(var key in this.typeMaps)
{
this.unloadAll(this.typeMaps[key].type);
}
}
});
有:
App.reset();
但这不仅仅是清除数据存储,我们偶尔会看到store.pushPayload
尝试将数据推送到标记为从调用中销毁的对象上的错误App.reset();
。
我们一直在使用:
store.init();
这只是创建了一个新的空商店并且效果很好,但不幸的是它是一种私有方法。
现在可以使用store.destroy()
. 它会卸载所有记录,但也可以立即用于重新加载新记录。我已经确认了这一点1.0.0-beta.15
。它似乎不在文档中,但它一直在为我工作。
另一种方法是迭代 store's typeMaps
and running store.unloadAll(typeMap.typeName)
,但我不确定这是否完全必要。
删除模型中的记录。这个deleteOrgs
jsBin :
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 月,目前存在延迟删除数据的问题。)