Ember.js在页面上显示了ember-data验证错误

时间:2016-11-17 06:50:40

标签: ember.js ember-data

我在获取默认JSONAPIAdapter以将模型验证错误传播到登录页面时遇到问题。我已经验证了API服务器正在通过捕获错误正确发送响应并使用console.log验证适配器和模型正在处理正确返回的数据,但由于某种原因,我无法得到它显示在页面上:

来自API服务器的JSON响应:

{ errors: [
    {
        detail: 'Display name already exists',
        source: {
            pointer : 'data/attributes/display-name'
        } 
    },
    {
        detail: 'Email already exists',
        source: {
            pointer : 'data/attributes/email'
        }
    }
]}

这也会返回状态422,显示在控制台日志中:
Failed to load resource: the server responded with a status of 422 (Unprocessable Entity)

如果我没有.catch()错误,那就是console.logs以下内容,从我读过的,在代码中看到的是标准的:

ember.debug.js:19746 Error: The adapter rejected the commit because it was invalid
    at ErrorClass.EmberError (ember.debug.js:19681)
    at ErrorClass.AdapterError (errors.js:23)
    at ErrorClass (errors.js:49)
    at Class.handleResponse (rest.js:820)
    at Class.handleResponse (data-adapter-mixin.js:100)
    at Class.superWrapper [as handleResponse] (ember.debug.js:25367)
    at ajaxError (rest.js:1341)
    at Class.hash.error (rest.js:915)
    at fire (jquery.js:3187)
    at Object.fireWith [as rejectWith] (jquery.js:3317)

控制器代码如下:

user.save().then(() => {
  this.set('valid', 'Success! Log in!');
}).catch(() => {
console.log(user.get('errors.email')[0].message);
console.log(user.get('errors.displayName')[0].message);
});

以上捕获和console.logs错误消息正确,这意味着适配器成功捕获错误并序列化它以在模型中使用。问题出在模板中:

<div class="col-sm-6">
  <h2>ERRORS</h2>
  {{#each user.errors.displayName as |error|}}
      <h4>{{error.message}}</h4>
  {{/each}}
  {{#each user.errors.email as |error|}}
      <h4>{{error.message}}</h4>
  {{/each}}
  <h2>END ERRORS</h2>
</div>

根据DS.ERRORS Class这应该是设置它的适当方法,但是我无法在ERRORS和END ERRORS标题之间的前端正确显示错误。

0 个答案:

没有答案