1

我无法让 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() 中,当它遇到上面的代码时,它会找到对用户对象的引用并在其上调用 set.. 然后找到帐户并在其上调用 set.. 它找到用户并在其上调用 set..等等

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

4

1 回答 1

0

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

于 2013-02-15T22:02:37.640 回答