【问题标题】:Validating multiple properties in Breeze在 Breeze 中验证多个属性
【发布时间】:2013-04-09 15:45:10
【问题描述】:

使用 Breeze 处理以下验证场景的推荐方法是什么?

场景:我有一个包含startDateendDateuseDate 字段的实体。如果useDate 为真,那么我想验证 startDateendDate 是有效日期,而 endDate > startDate.

Breeze 文档中建议的方法是创建自定义验证器并将其注册到实体上。我在这种方法中看到的问题是,每次这三个属性之一发生更改时,我都需要手动调用validateEntity(),以便将验证错误添加到实体的错误集合中。在单个属性上添加自定义验证器的另一种推荐方法不提供对实体的访问(仅提供当前属性值),因此这也不是一个很好的选择。

我可以订阅实体上的每个 Knockout 属性更改事件,然后调用 validateEntity() 但这似乎很笨拙。

是否有任何方法可以将自定义实体级验证器添加到实体,但将其与一个或多个属性相关联,以便在相关属性之一发生更改时调用实体级验证器? Breeze 似乎在这里遗漏了一个常见的验证用例场景,但我可能遗漏了一些东西。

谢谢,理查德

【问题讨论】:

    标签: breeze


    【解决方案1】:

    我认为您可以针对每个 startDate、endDate 和 useDate 字段应用您的自定义验证器函数,以便对任何这些属性的更改都会触发相同的逻辑。

    查看 Breeze 代码,看起来传递给验证函数的 context 对象将具有 entity 属性,因此您可以访问实体上的其他属性(不是测试)。

    之后,如果需要,您还可以使用this post 中的代码复制这些验证函数,以成为knockout.validation 规则,以便在您的 UI 中进行绑定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-16
      • 2017-03-09
      • 2012-06-19
      • 2011-11-14
      • 2011-12-03
      相关资源
      最近更新 更多