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です