Znalazłem na GitHub dobry przykład pracy dla danych ember pod https://github.com/dgeb/ember_data_example i spróbuj przedłużyć go o zagnieżdżony zasób ('has_many: comments'). W oryginalnym przykładzie nowa transakcja jest tworzona za każdym razem, gdy widok edycji jest włączony i jest wysyłana/wycofywana, jeśli tryb edycji jest zapisany.Ember-data: jak udostępnić i zaktualizować obiekt w transakcji między działaniami kontrolera?
Próbuję dodać nowy komentarz do content.comments Nie mogę tego zrobić i mam błąd, ponieważ "treść" już jest w transakcji (Błąd: brak potwierdzenia: po zmianie rekordu nie można go przenieść do innej transakcji).
Czy pomysł, który próbuję zrealizować, jest zły i muszę podjąć inną decyzję?
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;
}
});