3

我正在从 Ember 数据 0.13 转换为 1.0.0 Beta 1。在 0.13 中,我使用了 becomeError 和 becomeInvalid 状态来了解保存记录时是否存在问题。

在 1.0.0 中不再有事务,您需要使用保存承诺来处理错误。见下文:

 save: function() {
    this.get('model').save().then(function () {
        alert("Record saved");
      }, function () {
        alert("Problem");
      });
    }, 

在上面,我想区分验证错误和所有其他错误(就像之前在 0.13 中的 becomeError 和 becomeInvalid 一样)。

有没有办法访问错误对象以及如何读取 json 响应中包含的验证错误?在此之前是通过 this.get('content.errors') ...

希望有人可以帮助马克

4

2 回答 2

2

Three steps:

Return errors in a proper format. If it Rails application, then:

\# Rails controller, update function

format.json { render json: {errors: @post.errors.messages}, status: :unprocessable_entity }

Set errors in promise

// app.js
save: function() {
  self = this;
  this.get('model').save().then(function () {
    alert("Record saved");
  }, function (response) {
    self.set('errors', response.responseJSON.errors);
  });
}

Display errors in a handlebar template

<\!-- index.html -->
{{input type="text" value=title}}<span class="alert-error">{{errors.title}}</span>
于 2013-12-27T05:09:46.107 回答
0

不确定这是否有助于您替换bacameInvalidand ,becameError因为现在正在删除状态,但您可以尝试将其作为一个包罗万象的解决方法:

Ember.RSVP.configure('onerror', function(error) {
  console.log(error.message);
  console.log(error.stack);
});

希望能帮助到你。

于 2013-09-01T22:00:19.917 回答