在Breeze中验证多个属性

在Breeze中验证多个属性,breeze,Breeze,使用Breeze处理以下验证场景的推荐方法是什么 场景:我有一个带有startDate、endDate和useDate字段的实体。如果useDate为true,则我要验证 startDate和endDate是有效日期,且endDate> 开始日期 Breeze文档中建议的方法是创建一个自定义验证器并在实体上注册它。这种方法的问题是,每次这三个属性中的一个发生更改时,我都需要手动调用validateEntity(),以便将验证错误添加到实体的错误集合中。另一种建议在单个属性上添加自定义验证器的方法

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

场景:我有一个带有
startDate
endDate
useDate
字段的实体。如果
useDate
为true,则我要验证
startDate
endDate
是有效日期,且
endDate
>
开始日期

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

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

是否有任何方法将自定义实体级验证程序添加到实体中,但将其与一个或多个属性关联,以便在其中一个关联属性更改时调用实体级验证程序?看起来Breeze缺少了一个常见的验证用例场景,但我可能缺少了一些东西


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

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

之后,如果需要,还可以使用中的代码来复制这些验证函数,以成为UI中绑定的规则