deleteRecord不会从hasMany中删除记录

cho*_*per 5 ember.js ember-data

当我调用我的deleteRecord()一些hasMany关系时,Ember Data发送(成功)DELETE请求,但记录不会从视图中删除.我正在使用这样的render帮助器显示它:

{{render "modules.list" modules}}
Run Code Online (Sandbox Code Playgroud)

有趣的是,Ember Inspector揭示deleteRecord()了相应的对象<App.Module:ember1182:null>和它的父对象之后null.然而,它的父级仍然显示其中的记录hasMany(as <App.Module:ember1182:null>)当我重新加载页面然后调用时deleteRecord(),它将按预期从视图中删除.

似乎deleteRecord()不会从父hasMany数组中删除记录.奇怪的是,这在我的代码的其他部分工作正常.我的一个理论是,这与{render}助手有关,因为无论我在哪里使用,我都有同样的问题,但我不确定这是否是造成问题的原因.

我正在使用最新版本的ember数据(commit 2511cb1f77).

cho*_*per 9

我找到了解决方案.它看起来像是deleteRecord调用clearRelationships,而后者又将belongsTo模型设置为null.但是它没有清除逆(即它不会从hasMany父关系中删除模型).以下代码修复了它.

var model = this.get('model');
model.eachRelationship(function(name, relationship){
    if (relationship.kind === "belongsTo") {
        var inverse = relationship.parentType.inverseFor(name);
        var parent  = model.get(name);
        if (inverse && parent) parent.get(inverse.name).removeObject(model);
    }
});
this.get('model').deleteRecord();
this.get('model').save();
Run Code Online (Sandbox Code Playgroud)

但是在我看来,这应该由Ember(数据)处理.它似乎是(大部分时间),因为这在我的代码的其他部分工作得很好.所以这种情况很可能是某种边缘情况.任何关于可能发生的事情的想法都非常感激.