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
).
我找到了解决方案.它看起来像是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(数据)处理.它似乎是(大部分时间),因为这在我的代码的其他部分工作得很好.所以这种情况很可能是某种边缘情况.任何关于可能发生的事情的想法都非常感激.
归档时间: |
|
查看次数: |
4454 次 |
最近记录: |