Ember.js 余烬数据1.0.0:如何检索验证错误(422响应)
我正在从灰烬数据0.13转换为1.0.0 Beta 1。在0.13中,我使用becameError和becameInvalid状态来了解保存记录时是否存在问题 在1.0.0中,不再有事务,您需要使用保存承诺来处理错误。见下文:Ember.js 余烬数据1.0.0:如何检索验证错误(422响应),ember.js,ember-data,Ember.js,Ember Data,我正在从灰烬数据0.13转换为1.0.0 Beta 1。在0.13中,我使用becameError和becameInvalid状态来了解保存记录时是否存在问题 在1.0.0中,不再有事务,您需要使用保存承诺来处理错误。见下文: save: function() { this.get('model').save().then(function () { alert("Record saved"); }, function () { alert(
save: function() {
this.get('model').save().then(function () {
alert("Record saved");
}, function () {
alert("Problem");
});
},
在上面,我想区分验证错误和所有其他错误(就像之前在0.13中使用becameError和becameInvalid时一样)
是否有方法访问错误对象以及如何读取json响应中包含的验证错误?之前是通过this.get('content.errors')
希望有人能帮忙
Marc不确定这是否有助于替换
bacameInvalid
和becameError
,因为现在正在删除状态,但您可以尝试将其作为一种catchall解决方法:
Ember.RSVP.configure('onerror', function(error) {
console.log(error.message);
console.log(error.stack);
});
希望有帮助。三个步骤:
以正确的格式返回错误。如果是Rails应用程序,则:
\# Rails controller, update function
format.json { render json: {errors: @post.errors.messages}, status: :unprocessable_entity }
以讹传讹
// app.js
save: function() {
self = this;
this.get('model').save().then(function () {
alert("Record saved");
}, function (response) {
self.set('errors', response.responseJSON.errors);
});
}
在车把模板中显示错误
<\!-- index.html -->
{{input type="text" value=title}}<span class="alert-error">{{errors.title}}</span>
{{input type=“text”value=title}{{errors.title}}
承诺中似乎有错误对象,您可以通过error.status(例如422)和error.responseText访问属性。在promise中使用警报是可行的,但例如使用this.transitionRoute('authors.index');在promise或this.set的成功部分('validationErrors',error.responseText');承诺中的错误部分不起作用。看起来“this”这个词不能在承诺中使用…@cyclomarc,如果您保存对this
的引用,比如var self=this代码>在承诺之外,在内部使用self
,那么您是否有访问权限?是的,这是有效的。我总是和“这个”混淆。。。谢谢。现在,我可以继续尝试在Ember data 1.0.0中保存记录时实现一个良好的错误处理