ワークフローは次のとおりです。
- ユーザーは新しいページを表示しています。
- 保存をヒットすると、モデルの検証が失敗します。モデルにバインドされたエラーが表示されます。まだ同じページにあります。
- これで、ユーザーは[インデックス]ページに移動し、リストに追加された無効なレコードを確認できます。
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
イベントは呼び出されます。スローを実行record.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が検証に失敗したレコードを追加するのを防ぐ方法はありますか?