访问Ember-Data的验证错误

时间:2014-03-15 17:28:34

标签: ember.js error-handling ember-data

当我的服务器返回422时,它会提示Ember Data创建InvalidError消息。该消息可能如下所示:

The backend rejected the commit because it was invalid: username must be at least 4 characters long

此消息显示在我的控制台中,但我想在浏览器中显示它,以便用户可以看到它。但是,如何在模板中访问此错误?我无法找到关于Ember Data的错误处理的任何文档。

3 个答案:

答案 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)

errorsisValid时,模型的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'
  });