我的应用程序具有从后端读取的一组实体的新/编辑表单。
当我打开这样一个表单,并填写/编辑某些字段,然后导航,记录在实体列表中显示已更改,即使我没有提交这些更改。重新加载应用程序(从后端重新加载数据)可以解决问题,但不是一个选项。
我已尝试在表单视图的willDestroyElement中进行一些事务回滚,但这似乎从根本上是错误的,因为即使在成功提交表单(并且实际上与Attempted to handle event rollback on X while in state rootState.loaded.updated.inFlight
崩溃)之后它也会被调用。
如果涉及导航离开表单的任何用例,我将如何忽略所有未提交的表单更改(类似于按下取消按钮,执行事务回滚)?
使用Ember rc5,Ember Data 0.13。
答案 0 :(得分:4)
退出表单路径时,请检查记录的状态。如果它的(isNew OR isDirty)且它的NOT isSaving,则回滚:
App.FormRoute = Ember.Route.extend({
deactivate: function() {
var model = this.controllerFor('form');
if ( (model.get('isNew') || model.get('isDirty')) && (!model.get('isSaving')) ) {
model.rollback();
}
}
});