工作流程是:
- 用户在新页面上。
- 点击保存,导致模型验证失败。显示了绑定到模型的错误。仍然在同一页面上。
- 用户现在导航到索引页面并看到添加到列表中的无效记录。
ArrayController 似乎正在添加验证失败的记录。
App.CompaniesNewRoute = Ember.Route.extend({
model: function(){
var company = App.Company.createRecord();
this.wireObservers(company, this);
return company;
},
events: {
save: function(){
var controller = this.controllerFor(this.routeName);
controller.get('transaction').commit();
}
},
wireObservers: function(company, router) {
company.on('becameInvalid', function(record){
// do something to remove it from the arraycontroller
// record.rollback();
});
company.on('didCreate', function(){
router.transitionTo('companies.index')
});
})
})
该becameInvalid
事件确实被调用。执行 arecord.rollback()
会引发异常:
Uncaught Error: Attempted to handle event `becameClean` on <App.Company:ember612:null> while in state rootState.loaded.created.invalid. Called with undefined ember-data.js:3495
DS.StateManager.Ember.StateManager.extend.unhandledEvent ember-data.js:3495
有没有办法防止 ArrayController 添加验证失败的记录。