如何添加收集级别验证

时间:2013-01-17 11:43:04

标签: breeze

我如何在Breeze中实现收集级别验证。

说我有3行的集合。我想确保%Used列的总和为100。

行数可以变化(动态),它可以是1-10行之间的任何行。 每个父行可以具有不同的子行集合

a) Parent Row1
   ID  %used
   1    20
   2    40
   3    40
   ========
        100

b) Parent Row 2
   ID %used
   1)  50
   2)  50
   ========
      100

等等

1 个答案:

答案 0 :(得分:1)

所以,为了澄清,我假设你的问题是你有一个entityType,它有一个集合导航属性,你要验证的内容。例如,您可能希望确保订单中所有订单详细信息的总运费成本低于100美元。

这可以通过向entityType添加“实体级别”验证来完成。即

之类的东西
myEntityType = myEntityManager.getEntityType("Foo");
myEntityType.validators.add( myCustomValidator);

有关详细信息,请阅读breeze验证文档here

验证器本身应基本上迭代从所需导航属性返回的结果,并对在迭代过程中计算的某些聚合执行其验证。

实体级别验证(例如此操作)将在保存过程中自动执行,但如果您希望在导航属性的“内容”被修改时执行此验证,您还需要查看'relationArray。 arrayChanged'事件。 breeze中的每个集合导航属性都是'relationArray',因此您可以在您感兴趣的每个关系数组上订阅此事件,并在看到更改时调用父实体验证。

我们希望在某些时候在breeze文档中添加其他验证示例。如果您觉得这样做有帮助,请添加此项并在微风User Voice上投票。

希望这会有所帮助。