我正在使用ember-data,并希望捕获并显示其余适配器返回的任何错误。我查看了问题here
我在模型定义中添加了以下代码:
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-0ad81c9bc213","lastName":"","notes":"ccc"}
这似乎是记录本身的json,而不是错误。
如何解决错误?我试过了
console.log(errors.get("errors.lastName")
但未定义。
答案 0 :(得分:0)
尝试:
becameError: function(object) {
}
答案 1 :(得分: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)
上映射一些字段。
答案 2 :(得分:0)
尝试使用DS.rejectionHandler
:
DS.rejectionHandler = function(reason) {
Ember.Logger.assert([reason, reason.message, reason.stack]);
throw reason;
};
这应该捕获适配器的所有错误。