GitHub でhttps://github.com/dgeb/ember_data_exampleの下にある ember-data の適切な実例を見つけて、ネストされたリソース (「has_many: コメント」) でそれを拡張しようとしました。元の例では、編集ビューがオンになるたびに新しいトランザクションが作成され、編集モードを終了すると送信/ロールバックされます。
新しいコメントを content.comments に追加したいのですが、「コンテンツ」が既にトランザクションにあるため、実行できず、エラーが発生します (エラー: アサーションに失敗しました: レコードが変更された後、それを別のトランザクションに移動することはできません) )。
私が実現しようとしている考えは間違っているのでしょうか?
App.EditContactController = Em.Controller.extend({
content: null,
addComment: function () {
// ERROR here:
this.get('content.comments').addObject(App.Comment.createRecord({body: ''}));
},
enterEditing: function() {
this.transaction = this.get('store').transaction();
if (this.get('content.id')) {
this.transaction.add(this.get('content'));
} else {
this.set('content', this.transaction.createRecord(App.Contact, {}));
}
},
exitEditing: function() {
if (this.transaction) {
this.transaction.rollback();
this.transaction = null;
}
},
updateRecord: function() {
// commit and then clear the transaction (so exitEditing doesn't attempt a rollback)
this.transaction.commit();
this.transaction = null;
}
});