从hasMany关系中删除多个记录会导致js错误

Dee*_*tha 2 ember.js ember-data

我有简单的模型定义为:

        App.Answer = DS.Model.extend({
            name: DS.attr('string')
        });

        App.Question = DS.Model.extend({
            questionName: DS.attr('string'),
            answers: DS.hasMany('answer')
        });
Run Code Online (Sandbox Code Playgroud)

我希望能够添加问题模型的答案,并且能够通过单击按钮删除所有hasMany关联.但是当我在循环中调用deleteRecord时,它会抛出js错误.替代方法是在删除每条记录之后引入一些延迟,我认为这不是正确的做事方式.

这里是用于演示问题的jsbin链接:http://jsbin.com/UleKodiC/2/ 单击"添加"按钮几次,然后单击"全部删除",它应该给你js错误,模型是未定义的.但是,如果单击"删除缓慢"(延迟删除),它会删除记录而不会出现错误.

谢谢,迪

Kin*_*n2k 13

你正在修改你正在迭代的集合,这通常是糟糕的mojo,简单的解决方法是创建一个不同的列表并迭代它,同时修改你想要更改的列表.

var answers = this.get('model.answers'),
    list = answers.toArray();

list.forEach(function(answer) {  
  answer.deleteRecord();
  answers.removeObject(answer);
});
Run Code Online (Sandbox Code Playgroud)

http://jsbin.com/uJopIcE/1/edit