如何在不清除本地存储的情况下删除与ember模型关联的所有记录?

use*_*285 6 local-storage ember.js ember-data ember-model

我已经扩展了此stackoverflow答案中给出的程序,以便有一个程序一次性删除所有记录.但是,删除仅在批处理中发生,并且不会一次删除所有内容.

这是我在这个JSBin中使用的函数的片段.

deleteAllOrg: function(){
  this.get('store').findAll('org').then(function(record){
    record.forEach(function(rec) {
        console.log("Deleting ", rec.get('id'));
        rec.deleteRecord();
        rec.save();
    });
    record.save();
  });
}
Run Code Online (Sandbox Code Playgroud)

知道如何修改程序,以便可以立即删除所有记录吗?

我也尝试过model.destroy()和model.invoke('deleteRecords')但它们不起作用.

任何帮助是极大的赞赏.谢谢你的帮助!

cho*_*per 16

deleteRecord()内部调用forEach将打破循环.您可以通过将删除代码包装在如下Ember.run.once函数中来修复它:

  this.get('store').findAll('org').then(function(record){
     record.content.forEach(function(rec) {
        Ember.run.once(this, function() {
           rec.deleteRecord();
           rec.save();
        });
     }, this);
  });
Run Code Online (Sandbox Code Playgroud)

看到这个jsBin.

  • 现在你可以调用`this.get('store').findAll('org').invoke('destroyRecord')`来删除它们. (7认同)
  • @Jacob,这实际上不起作用.Invoke使用相同的forEach函数. (2认同)