Ember deleteRecord过多的递归

时间:2013-02-07 16:23:12

标签: javascript recursion ember.js ember-data

我无法让Ember删除具有belongsTo关系的记录。我有几个模型设置与这样的一对一关系:

App.User = DS.Model.extend({
    account: DS.belongsTo('App.Account')
    ...
});

App.Account = DS.Model.extend({
    user: DS.belongsTo('App.User'),
    ...
});

这是我的UserController上的deleteUser方法

deleteUser: function() {
    user = this.get('model');
    var transaction = App.store.transaction();
    transaction.add(user);
    user.deleteRecord();
    transaction.commit();
    this.transitionTo('users');
}

当它到达user.deleteRecord();我在控制台中收到错误太多的递归。试图解决这个问题我发现在主要的ember.js文件的代码段中发生了无限循环

var meta = obj[META_KEY], desc = meta && meta.descs[keyName],
    isUnknown, currentValue;
if (desc) {
    desc.set(obj, keyName, value);
} else {
    ....
}

deleteRecord调用clearRelationships,它在用户对象上调用Ember.set(this,“account”,null)。在Ember.set()里面,当它点击上面的代码时,它找到对用户对象的引用和在它上面设置的调用..然后查找在其上设置的帐户和调用..它找到用户和设置在它上面的调用..等

如果这是Ember中的错误,任何人都可以帮我修复或解决方法吗?这是我的示例的jsFiddle

1 个答案:

答案 0 :(得分:0)

看起来这是一个疏忽。 github上的这个拉取请求为我解决了问题https://github.com/emberjs/data/pull/715