我最近从ember数据1.0.0-beta.2升级到ember数据1.0.0-beta.9。有一段代码可以删除在beta 2中完美运行的记录,但它在beta9中不起作用。
我的模型看起来像这样:
AS.Question = DS.Model.extend({
questionName: DS.attr('string'),
childQuestions: DS.hasMany('question', {
async: true
})
});
我的删除方法如下:
deleteQuestion: function (question) {
var self = this;
question.deleteRecord();
question.save().then(function () {
console.log('success');
//unload child records from the store because server removes all the child questions
}, function (failureResponse) {
console.log(failureResponse);
console.log('failure');
//perform rollback
})['finally'](function () {
console.log('in finally');
});
}
在ember数据beta 9中,如果我的问题有子问题,它永远不会通过成功函数,它总是进入第二个捕获失败的函数。删除仅在问题没有子问题时才有效。我还尝试在删除父问题模型之前首先删除所有子问题但仍然直接进入故障阻止。 然而,删除请求使用http状态200正确解析,并且删除请求的响应是空对象{}。
" failureResponse"咳出来的是:
Error: Assertion Failed: calling set on destroyed object
at new Error (native)
at Error.EmberError (lib/ember/ember.js:13538:33)
at Object.Ember.assert (lib/ember/ember.js:3722:27)
at set (lib/ember/ember.js:16834:23)
at Ember.Object.extend.hasManyDidChange (lib/ember/ember-data.js:7112:11)
at null.<anonymous> (lib/ember/ember-data.js:7101:18)
at lib/ember/ember.js:14897:34
at Object.OrderedSet.forEach (lib/ember/ember.js:14739:28)
at Object.Map.forEach (lib/ember/ember.js:14895:26)
at Ember.Object.extend.reloadHasManys (lib/ember/ember-data.js:7098:23)
一定是由以下原因引起的:
hasManyDidChange: function(key) {
var hasMany = this._relationships[key];
if (hasMany) {
var records = this._data[key] || [];
set(hasMany, 'content', Ember.A(records));//ONE OF THESE SETS IN EMBER-DATA
set(hasMany, 'isLoaded', true);
hasMany.trigger('didLoad');
}
},
任何想法如何在此测试版中进行删除工作?此外,如果你知道如何快速创建一个假的服务器,那么我可能会为它创建一个jsbin - 我尝试使用sinon但是不能让事情有效。
此致 DEE
更新 此问题必须由其他原因引起,因为我无法在此处重新创建此问题:http://jsbin.com/yofuqa/2/ 但仍然很奇怪,相同的逻辑可以在beta 2中运行,但不会在beta 9中运行!
使用beta .11,hasMany关系甚至不加载。这是jsbin:http://jsbin.com/yofuqa/3/