如何在模板中访问Ember JSON API错误

时间:2016-10-05 18:31:06

标签: javascript ember.js ember-data json-api

我有以下路线模型钩子:

model() {
    return this.store.query('page').then(
        (result) => { return result; },
        (errors) => { return errors; }
    );
}

我在API中返回一个基本错误,因此我可以确定在API尝试填充初始模型时失败时显示错误的最佳方法。

回复是:

{
    "errors": [
      {
         "detail": "Test",
         "source": {
             "pointer": "data/attributes/general"
         }
      }
    ]
}

这被抓住了,我留下了一个包含ErrorClass的模型。

console error

我希望上面的错误可以通过" 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的两个响应在格式方面看起来完全相同。

0 个答案:

没有答案