【问题标题】:Handling server side validation with Ember Data使用 Ember 数据处理服务器端验证
【发布时间】:2013-07-02 19:38:22
【问题描述】:

我在使用 Ember 和 Ember Data 处理服务器端验证时遇到问题。

发生验证错误时,API 返回代码 422。Ember 数据然后触发模型上的 becameInvalid 回调。

从这里开始,我不确定处理我遇到的错误的最佳方法是什么,以及如何让它们冒泡到视图中。

App.Challenge = DS.Model.extend Ember.Validations,
    title: attr('string')
    summary: attr('string')
    # other attributes

    becameInvalid: (errors) ->
        # is it the place where I should handle the errors?
        # how would I make the errors bubble up to the view here?

我有 2 个问题。

  • 我不确定becameInvalid是否是处理错误的地方,如果是,如何使错误显示在视图中
  • becameInvalid 中,@get('isValid') 返回true,这对我来说没有意义。

【问题讨论】:

    标签: validation ember.js server-side ember-data


    【解决方案1】:

    这是我应该处理错误的地方吗?

    是的。但是您可能根本不需要做任何事情。 Ember-data 期望您的 api 在其 json 响应中包含任何验证错误。该错误对象被传递给becameInvalid 钩子,并且还保存为模型上的属性errors。因此,如果您只想在视图中显示错误,那么执行以下操作可能就足够了:

    {{input value=firstName}}<p class="inline-help">{{errors.firstName}}</p>
    

    见:https://github.com/emberjs/data/blob/master/packages/ember-data/lib/serializers/rest_serializer.js#L50-L61

    在 becomeInvalid 中,@get('isValid') 返回 true,这对我来说没有意义

    同意这很奇怪。我认为这是一个绑定的事情,就像 becomeInvalid 挂钩在绑定更新之前运行。

    【讨论】:

    • 好吧,你说得对,我什么都不用做。我的问题是我正在使用 ember-validations 并且它在 validationErrors 对象中设置错误,这使得处理错误比它应该的更复杂。我将尝试另一个插件,它直接在errors 对象上设置错误。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    相关资源
    最近更新 更多