1

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

场景:我有一个带有startDate,endDateuseDate字段的实体。如果useDate是真的,那么我想验证 startDate并且endDate是有效日期和endDate> startDate

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

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

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

谢谢,理查德

4

1 回答 1

2

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

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

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

于 2013-04-17T03:38:20.537 回答