0

我正在使用 ember-data,并希望捕获并显示其余适配器返回的任何错误。我在这里查看了问题

我在模型定义中添加了以下代码:

 becameInvalid: function(errors) {
        alert ("here" + errors);
    },

其余适配器返回 422(不可处理实体)代码

但是,警报没有显示。我错过了什么,还是只是一个真正的新手?

更新#1:

取得一些进展。其余服务器返回以下 Json:

{"errors":{ "lastName": ["LastName cannot be blank"] }} 

该模型有

becameInvalid: function(errors) { console.log(JSON.stringify(errors)); }, 

但是,控制台现在具有以下内容:

{"email":"jmls@foo,com","firstName":"Julian","id":"aa7c4b42-df64-8fb8-d213-0ad81‌​c9bc213","lastName":"","notes":"ccc"}

这似乎是记录本身的 json,而不是错误。

我怎样才能找到错误?我努力了

console.log(errors.get("errors.lastName")

但不确定。

4

3 回答 3

0

尝试使用DS.rejectionHandler

DS.rejectionHandler = function(reason) {
  Ember.Logger.assert([reason, reason.message, reason.stack]);

  throw reason;
};

这应该捕获来自适配器的所有错误。

于 2013-08-31T16:18:54.807 回答
0

我认为你错过了一些东西,使用becameInvalid为我工作。

例如:

App.Person = DS.Model.extend({
    name: DS.attr('string') ,
    becameInvalid: function(errors) {        
        alert(errors.get('errors.name').join(','));
    }
});

更新

遵循@fanta 的建议,在表扬中。也许您的问题出在返回的 json 中,预期为:

{
  errors: {
    field_a: ['error a', 'error b'],
    field_b: ['error c']
  }
}

field_a必须在哪里映射一些字段DS.attr(field_a)

看看那个样本http://jsfiddle.net/marciojunior/8maNq/

于 2013-08-30T22:41:19.060 回答
0

尝试:

becameError: function(object) {

}
于 2013-08-30T22:13:00.830 回答