Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 回滚父记录不会删除子记录_Ember.js_Ember Data - Fatal编程技术网

Ember.js 回滚父记录不会删除子记录

Ember.js 回滚父记录不会删除子记录,ember.js,ember-data,Ember.js,Ember Data,回滚父记录似乎不会删除任何可能已添加到其中的新子记录。不确定这是错误还是功能 App.Company = DS.Model.extend({ name: DS.attr('string'), employees: DS.hasMany('App.Employee') }); App.Employee = DS.Model.extend({ name: DS.attr('string'), company: DS.belongsTo('App.Company') }) var

回滚父记录似乎不会删除任何可能已添加到其中的新子记录。不确定这是错误还是功能

App.Company = DS.Model.extend({
  name: DS.attr('string'),
  employees: DS.hasMany('App.Employee')
});

App.Employee = DS.Model.extend({
  name: DS.attr('string'),
  company: DS.belongsTo('App.Company')
})

var company = App.Company.find(1);
//Initially: company.get('employees.length') => 0

var employee = company.get('employees').createRecord();
//Now: company.get('employees.length') => 1

employee.get('transaction').rollback();
//Still: company.get('employees.length') =>1
//Also: employee.get('isDeleted') => true

company.get('transaction').rollback();
//Even now: company.get('employees.length') =>1

//How do I rollback such that company.get('employees.length') == 0
我的应用程序中有一个rollbackAll()方法,它使用get和promissions进行深度优先遍历,然后在回滚父级之前将它们全部回滚。看起来是这样的:

rollbackAll: function() {
  // recursively rollback on all children and self
  this.get('children').then(function (children) {
    children.forEach(function(child) {
      child.rollbackAll();
    });
  });
  this.rollback();
}
我应该提到,这是因为我的应用程序中碰巧有递归关系(即对象树,每个对象都可以有自己的父对象)

这里的模式是,每个模型“类”都可以获得自己的rollbackAll方法,它知道如何回滚自己的关联,然后只需在每个模型上调用rollbackAll()。(如果您有多个级别,则首先是最深的子级)