使用 Ember Data 处理服务器端验证

2024-01-25

我在使用 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是处理错误的地方,如果是,如何让错误显示在视图中
  • In becameInvalid, @get('isValid')回报true,这对我来说没有意义。

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

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

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

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

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

同意这很奇怪。我认为这是一个绑定问题,就像在绑定更新之前运行的 BeenInvalid 钩子一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Ember Data 处理服务器端验证 的相关文章

随机推荐

  • 如何以这种方式将数据粘贴到列和行中

    我有一些标签数据要根据用户定义的输入值以列和行格式打印 它们是基于 3 个主要输入的条件 1 要跳过的起始标签数量 2 每行标签数量 3 每页行数 我有一份数据表 其中 A 列中包含数据 B 列中包含要打印的份数 我在希望打印的页面中附加了
  • ruby 的难忘名字生成器 gem

    在我自己动手并开始拿出字典之前 有谁知道 ruby gem 可以生成适合应用程序密钥的难忘名称 我需要一些可发音的东西 以便我可以为用户提供唯一的电子邮件地址来提交内容 我喜欢 Heroku 为其应用程序命名的例子 floating sky
  • Qt keyPressEvent、“Hold”和 keyReleaseEvent 处理按钮/鼠标点击

    我正在编写一个 Qt 程序来模拟一个硬件 我想模拟按钮按下 按住和释放事件 在我的应用程序中 我想处理键盘和鼠标点击的输入 以使用户 即我 方便 我注意到一些奇怪的行为 但我不明白 该应用程序使用 QPushButtonautoRepeat
  • const char 指针分配的内存在哪里? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的字符串文字是在静态内存中创建的吗 https stackoverflow com questions 349025 is a string literal in c created in st
  • 使用 ASP.NET 的 IIS 中的自定义 401 页面

    我有一个面向互联网的 ASP NET 网站 我想通过 Windows 身份验证来保护该网站的安全 我将 web config 文件设置为
  • Box2D 是完全确定性的吗?

    我正在使用 LibGDX 和 Box2D 编写 Android 游戏 我计划为其添加回合制多人游戏功能 现在 如果在两个客户端上我以相同的速率和相同的时间步长步进 Box2D 世界 并使用完全相同的初始参数在两个客户端上开始模拟 当模拟结束
  • 使用反射来分析参数及其值

    我在这里看到过关于 SO 的旧帖子 大约一年了 这意味着它们并没有真正涵盖这个主题的 NET 4 甚至 3 5 所以就这样吧 如果您使用反射来获取当前方法的参数 ParameterInfo methodParams MethodInfo G
  • 如何在 Prometheus 中执行具有两个指标的查询?

    我正在使用 Prometheus 查询 Apache Flink 的指标 我想测量 Map 函数每秒输入和输出的记录数 当我在 Prometheus 中查询两个不同的指标时 图表仅显示其中之一 flink taskmanager job t
  • Orchard CMS 性能

    我已经开始为我的一个网站使用 Orchard CMS 并注意到我的主页的初始加载时间相当长 我没有添加太多可言的内容 所以我所看到的与开箱即用的体验相当接近 我怀疑这与在我的共享主机上使用 Sql 服务器紧凑有关 但还不太了解幕后的内容来确
  • 部分类中的 DataAnnotations 问题

    所以在我的 mvc 项目的 Project Repository 中我有 MetadataType typeof FalalaMetadata public partial class Falala public string Name g
  • Mac OS X Mavericks 更新后,使用 npm 进行全局安装不起作用

    升级到 OS X 10 9 Mavericks 后 在 bash 中不再找到 Node 我想我安装了它brew不久以前 我决定使用 node js 网站上的安装程序 一切都很顺利node and npm在 bash 中可用 但是 全局安装软
  • Android的RelativeLayout低于2个视图

    我有一个RelativeLayout像这样
  • C# 在属性被命中之前运行一段代码

    我有一个方法 我希望始终在属性的 get 访问器之前运行 如果不手动运行 get 中的方法 这可能吗 这是我想要工作的一个例子 private string someString private string someOtherString
  • 无法在非聚合查询中的未定义结果变量上添加条件

    我正在实体存储库中执行此查询并不断获取 无法在未定义的结果变量上添加条件 但查询根本没有聚合 为什么这种事会发生在我身上 public function getPersonalizableItemsByOwner User owner qb
  • Xcode/iOS——摆脱特定常量的弃用警告?

    我的项目中有一些已弃用的常量 他们需要留下来 我不想收到关于它们的警告 但是如果稍后在我的项目中出现其他已弃用的常量 我确实希望收到警告 Apple 的标头将它们声明如下 extern NSString const NameOfString
  • 按钮文本位置与浏览器不同

    无论是在 firefox chrome 还是 opera ie 中 按钮文本位置都不同 我有一个按钮和文字 在 Opera 中 它比在 Firefox 中低一点 HTML
  • 如何使用户控件部分类了解基类中声明的控件?

    我们是否必须做一些特殊的事情才能让 ASP NET 分部类了解在用户控件的基类中声明的控件 分部类不断为基类中的控件生成声明 这意味着基类中的控件被隐藏并且为空 CodeFileBaseClass 属性可应用于 Page http msdn
  • PostgreSQL 检查数组是否包含左侧数组中的任何元素

    我知道在 PostgreSQL 中你可以运行如下查询 SELECT 1 ANY 1 3 4 7 int AS result检查右侧数组是否包含该元素1 我想知道是否有一种简单的方法来检查右侧数组是否包含来自左手大批 就像是 SELECT 2
  • 使用主干js加载模板

    我开始进行 javascript 开发 并使用 node js 作为休息 API 和使用主干的客户端做了一个简单的项目 一切看起来都很完美 直到我想从我的 js 中获取模板 我发现了不同的方法 其中一些需要一段时间 例如一年 但我不明白哪种
  • 使用 Ember Data 处理服务器端验证

    我在使用 Ember 和 Ember Data 处理服务器端验证时遇到问题 当发生验证错误时 API 返回代码 422 然后 Ember 数据会触发becameInvalid模型上的回调 从这里开始 我不确定处理我遇到的错误的最佳方法是什么