gpt4 book ai didi

ember.js - deleteRecord 不会从 hasMany 中删除记录

转载 作者:行者123 更新时间:2023-12-04 17:22:37 26 4
gpt4 key购买 nike

当我打电话时deleteRecord()在我的一些关系中,Ember Data 发送了(成功)DELETE请求,但该记录不会从 View 中删除。我正在使用 render 显示它像这样的 helper :

{{render "modules.list" modules}}

有趣的是,Ember Inspector 显示在 deleteRecord() 之后对应的对象是 <App.Module:ember1182:null>它的父级是 null , 也。然而,它的父级仍然在其 hasMany 中显示记录。 (如 <App.Module:ember1182:null> )当我重新加载页面然后调用 deleteRecord() ,它会按预期从 View 中删除。

看来 deleteRecord()不会从父项的 hasMany 中删除记录大批。奇怪的是,这在我的代码的其他部分工作正常。我的一个理论是,这与 {render} 有关。 helper ,因为无论我在哪里使用它,我都会遇到同样的问题,但我不确定这是否是导致问题的原因。

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

最佳答案

我找到了解决方案。好像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();

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

关于ember.js - deleteRecord 不会从 hasMany 中删除记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18806533/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com