私は ember.js にかなり慣れていないので、いくつかの実験を行っています。最近、レコードを削除しようとして、ちょっとした壁にぶつかりました。これが私の編集ルートです(そこから削除を呼び出します)
App.PostsEditRoute = Ember.Route.extend({
model: function(params){
return App.Post.find(params.id);
},
exit: function() {
this._super();
tx = this.get('currentModel.transaction');
if(tx)
tx.rollback();
},
setupController: function(controller, model){
controller.set('content', model);
},
events: {
save: function(post){
post.one('didUpdate', this, function(){
this.transitionTo('posts.show', post);
});
post.get('transaction').commit();
},
cancel: function(){
this.transitionTo('posts.show', post);
},
destroyPost: function(context) {
var post = context.get('content');
post.deleteRecord();
post.get('store').commit();
this.transitionTo('posts.index');
}
}
});
したがって、destroyPost をトリガーするためのリンクがあります。無事にレコードが削除され、インデックスルートに遷移し始めるがエラーが発生…
キャッチされないエラー: rollback
rootState.deleted.inFlight 状態でイベントを処理しようとしました。未定義で呼び出されます
この後、インデックス ページのモデルの読み込みが停止し、空のページが表示されます。必要な追加コードを提供できます。目次ルートはこちら。
App.PostsIndexRoute = Em.Route.extend({
model: function(){
return App.Post.find();
},
setupController: function(controller, model){
controller.set('content', model);
}
});
これらのルートは両方とも、それ自体で正しく読み込まれることに注意してください。私が失敗するのは過渡期だけです。