当我的服务器返回422时,它会提示Ember Data创建InvalidError消息。该消息可能如下所示:
The backend rejected the commit because it was invalid: username must be at least 4 characters long
此消息显示在我的控制台中,但我想在浏览器中显示它,以便用户可以看到它。但是,如何在模板中访问此错误?我无法找到关于Ember Data的错误处理的任何文档。
答案 0 :(得分:3)
您的JSON应如下所示:
{
"errors":
{
"body":["can\'t be blank"],
"title":["should begin with a capital letter"]
}
}
然后您可以显示所有错误消息:
{{#each errors.messages}}
<div>
<p class="label label-danger">{{this}}</p>
</div>
{{/each}}
此外,您只能显示特定值的消息(例如title
的消息),如下所示:
{{#each error in errors.title}}
<div><p class="label label-danger">{{error.message}}</p></div>
{{/each}}
如果您只是想表明出现问题,可以这样做:
{{#if errors}}
<p>Some errors occurred</p>
{{/if}}
请注意,视图中的范围可能不同。可能需要使用model.errors
或类似的方法来访问错误对象。
您可以在此处找到完整示例jsBin。
答案 1 :(得分:0)
当errors
为isValid
时,模型的false
属性应包含任何错误。查看ember-data中的adapterDidInvalidate
方法。
答案 2 :(得分:0)
尝试
DS.InvalidError({username:"username must be at least 4 characters long"}).
来自文档:
DS.InvalidError
必须使用单个对象构造,该对象的键是无效的模型属性,其值是相应的错误消息。例如:
return new DS.InvalidError({
length: 'Must be less than 15',
name: 'Must not be blank'
});