1

Ember に属しているレコードを削除させるのに問題があります。次のような 1 対 1 の関係でセットアップされたモデルがいくつかあります。

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 は、ユーザー オブジェクトで Ember.set(this, "account", null) を呼び出す clearRelationships を呼び出します。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 に答える