我有一个名为' testroute '的路径(localhost:8080 / testroute)。
它有一条记录。我试着编辑它(localhost:8080 / testroute / edit / 1)。我给了新的价值并提交了。这些值未能通过服务器端验证,并且状态代码 422 引发 错误消息 。
然后我决定不再编辑了。从这里开始,我又去了一条名为' nextroute '的路线(localhost:8080 / nextroute)。
现在,我再次尝试去'testroute'(localhost:8080 / testroute)。它没有进入控制台我得到错误“在状态root.loaded.updated.invalid中尝试处理事件pushedData
。”
我以前使用编辑过的值进行ajax调用是
this.get('model').save().then(function(response){
console.log('response',response);
//code
},function(error){
console.log('error',error);
//code
});
当我刷新页面时,我可以去'testroute'(localhost:8080 / testroute)。但是在这个错误发生后我无法打开。
记录在ember-date中处于修改状态(我在ember检查员中看到过)。当我刷新它时它只会进入清洁状态。
答案 0 :(得分:0)
我所知道的是,您的服务器无法处理您的帖子/补丁请求并返回错误。因此,您的模型处于无效状态。你应该做的是,一旦错误被退回,你的模型rollback:
var model = this.get('model')
model.save().then(function(response){
console.log('response',response);
//code
},function(error){
console.log('error',error);
model.rollbackAttributes();
});
修改强>
如果您需要在离开页面之前将模型保持在其状态,则应使用路线的willTransition
事件,例如:
Ember.Route.extend({
actions: {
willTransition: function(transition) {
if (this.controller.get('model.errors')) {
Ember.Logger.debug('model will be reverted');
this.controller.get('model').rollbackAttributes()
}
}
}
});
有关详细信息,请参阅here。