gpt4 book ai didi

ember.js - 删除记录时,转换到另一条路线失败

转载 作者:行者123 更新时间:2023-12-04 12:34:03 25 4
gpt4 key购买 nike

我对 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。记录删除成功,我开始过渡到索引路由,但是出现错误...

Uncaught Error :尝试处理事件 rollback在状态 rootState.deleted.inFlight 时打开。未定义调用

在此之后,为索引页面加载模型停止,我得到一个空页面。我可以提供所需的任何其他代码。这是索引路线。
App.PostsIndexRoute = Em.Route.extend({
model: function(){
return App.Post.find();
},
setupController: function(controller, model){
controller.set('content', model);
}
});

我应该注意,这两条路线都可以自行正确加载。只有在过渡中我才会失败。

最佳答案

您需要绑定(bind)到didDelete就像你对 didUpdate 所做的那样在保存方法中。

destroyPost: function(context) {
var post = context.get('content');
post.one('didDelete', this, function () {
this.transitionTo('posts.index');
});
post.deleteRecord();
post.get('transaction').commit();
}

此外,您的代码似乎有点不一致:在保存方法中,您提交了一个单独的事务,而在 destroyPost 中您正在提交整个商店。

关于ember.js - 删除记录时,转换到另一条路线失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14820016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com