Ember.js 余烬数据1.0.0:如何检索验证错误(422响应)

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(

我正在从灰烬数据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("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中保存记录时实现一个良好的错误处理