我有以下路线模型钩子:
model() {
return this.store.query('page').then(
(result) => { return result; },
(errors) => { return errors; }
);
}
我在API中返回一个基本错误,因此我可以确定在API尝试填充初始模型时失败时显示错误的最佳方法。
回复是:
{
"errors": [
{
"detail": "Test",
"source": {
"pointer": "data/attributes/general"
}
}
]
}
这被抓住了,我留下了一个包含ErrorClass的模型。
我希望上面的错误可以通过" general"键,并能够在模板中执行以下操作:
{{#each model.errors.general as |error|}}
<div class="error msg_animate">{{error.message}}</div>
{{/each}}
但我无法以这种方式访问错误。 似乎我的错误响应没有被正确解析,因为我可以这样访问错误:
{{#each model.errors as |error index|}}
<div class="error msg_animate">{{error.detail}} - {{error.source.pointer}}</div>
{{/each}}
这映射到上面显示的基本ErrorClass并输出:
Test - data/attributes/general
这是出乎意料的。我错过了什么?
更新信息
我有以下工作在另一条路线。不同之处在于它在尝试保存模型后返回错误(而不是直接从model()钩子返回错误:
template.hbs
{{#each model.errors as |error|}}
<div class="error msg_animate">{{error.message}}</div>
{{/each}}
route.js
actions: {
submit: function(model){
model.save().then((resp) => {
this.transitionTo('admin.page-edit', resp.data.attributes.permalink);
}, function(resp){
// errors show on template
});
}
}
我对这种差异感到非常困惑。我的API的两个响应在格式方面看起来完全相同。