最近的 Ember Data Beta 自 1.0 Beta 12 起将错误传递给模型。店铺流程InvalidError
为您提供结果并将错误放在模型上。
我提交了一份PR #2392 https://github.com/emberjs/data/pull/2392它已被合并,使您的模型序列化器有机会在模型上设置之前从错误负载中提取错误。默认实现确保错误负载键现在正确映射到属性键,而以前的情况并非如此。
Ember Data 仍然只会将错误应用于定义了相应属性的模型。这一直是令人沮丧的根源,因为经常存在适用于整个模型的错误(例如“基础”)。这已包含在未决的问题 #1984 https://github.com/emberjs/data/pull/1984,使用以下解决方法,直到合并为止。
DS.Model.reopen({
adapterDidInvalidate: function(errors) {
var recordErrors = this.get('errors');
for (var key in errors) {
if (!errors.hasOwnProperty(key)) continue;
recordErrors.add(key, errors[key]);
}
}
});
您的模板代码还应该遵循中的示例DS 错误 http://emberjs.com/api/data/classes/DS.Errors.html:
{{#each message in errors.messages}}
<div class="error">
{{message}}
</div>
{{/each}}
您可能希望使用错误对于 http://emberjs.com/api/data/classes/DS.Errors.html#method_errorsFor方法来定位特定属性。
您可能还想使用帮助程序或组件来提取属性特定的模型错误并对其进行适当的标记。一些示例代码 https://github.com/indexiatech/ember-forms/blob/master/addon/control_help.js有关如何执行此操作的信息,请参阅 ember-forms 附加组件。
我也刚刚发现了一个Ember Data 服务器端错误处理教程 http://alexspeller.com/server-side-validations-with-ember-data-and-ds-errors/这可能很有用,只需忽略 RESTAdapter 位,因为它现在已经过时了。