2013-02-15 52 views
9

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

回答

4

Ember-Data中尚不支持清除数据存储。 Github跟踪器上有一个open issue concerning this

+0

这个问题是封闭的,但我仍然看不到清除商店没有的方法重置应用程序:我需要清除存储以进行调试,可能会从后端重新请求数据,而不会影响应用程序的状态(例如,我想保留在相同的路径中)。这可能吗? – dangonfast 2014-06-25 14:29:53

-1

按模型中的记录删除记录。的this jsBindeleteOrgs

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月的,目前a problem with lingering deleted data

+2

这是删除记录,这是比从存储中删除它们更*的方式。这是潜在的危险,导致后端永久数据丢失([删除记录](http://emberjs.com/guides/models/creating-and-deleting-records/#toc_deleting-records)) – dangonfast 2014-06-25 14:26:00

6

它看起来像,截至今日,仍有充分迫使商店清理没有通用的方法。最简单的解决方法似乎通过所有类型的循环(person,...),并做到:

store.unloadAll('person'); 

可以看出here

+0

我不知道当它被引入时,但是当前的文档指出你只需要执行'store.unloadAll()'来卸载所有记录。 – Daniel 2015-05-31 06:38:13

1

一个清洁&通用的方法。只需延长或重新开店&添加一个像这样的清晰方法。

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

0

有:

App.reset(); 

但是does more than clear out the data store和我们偶尔看到的错误,其中store.pushPayload试图将数据推到一个对象标志着调用App.reset();破坏。

了,我们一直在使用:

store.init(); 

刚刚创建了一个新的空店和伟大工程,但不幸的是是一个私有方法

0

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

另一种方法是迭代商店的typeMaps并运行store.unloadAll(typeMap.typeName),但我不确定这是完全必要的。