使用最新版本的ember-js和ember-data,删除记录时出现问题。
我的路线:
App.ListContactsRoute = Em.Route.extend({
model: function() {
App.Contact.find();
},
setupController: function(controller, model) {
controller.set('contacts', model);
}
});
App.EditContactRoute = Em.Route.extend({
setupController: function(controller, model) {
this.transaction = controller.get('store').transaction();
this.transaction.add(model);
controller.set('content', model);
controller.set('organizations', App.Organization.find());
},
events: {
delete: function(contact) {
contact.deleteRecord();
this.transaction.commit();
this.transaction = null;
this.transitionTo("listContacts");
},
save: function(contact) {
this.transaction.commit();
this.transaction = null;
this.transitionTo("editContact", contact);
}
}
});
删除联系人时,我将返回 ListContactsRoute ,因此会调用API,并返回一个联系人列表。此时,尚未在服务器上删除已删除的联系人。
结果,已删除的联系人仍然存在于我的联系人列表模板中。这是错误:
"Uncaught Error: Attempted to handle event `loadedData` on <App.Contact:ember469:null> while in state rootState.deleted.inFlight. Called with undefined"
我做错了什么或有办法解决这个问题吗?
答案 0 :(得分:1)
记录不再是this.transaction
的一部分,一旦提交事务,记录就会移动到商店默认事务。要反映您的删除操作,您需要提交商店。
contact.deleteRecord()
App.store.commit();