0

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

等々

4

1 に答える 1

1

明確にするために、あなたの問題は、コレクションナビゲーションプロパティを持つエンティティタイプがあり、その内容を検証することであると想定しています。例として、注文内のすべての注文詳細の合計運送費が 100 ドル未満であることを確認したい場合があります。

これは、entityType に「エンティティ レベル」の検証を追加することで実行できます。つまり、次のようなもの

myEntityType = myEntityManager.getEntityType("Foo");
myEntityType.validators.add( myCustomValidator);

詳細については、こちらの Breeze 検証ドキュメントをお読みください。

バリデーター自体は、基本的に、目的のナビゲーション プロパティから返された結果を反復処理し、反復プロセス中に計算した集計に対して検証を実行する必要があります。

このようなエンティティ レベルの検証は、保存プロセス中に自動的に実行されますが、ナビゲーション プロパティの「コンテンツ」が変更されるたびにこの検証を実行する場合は、「relationArray.arrayChanged」イベントも確認する必要があります。 . ブリーズのすべてのコレクション ナビゲーション プロパティは「relationArray」であるため、関心のある各リレーション配列でこのイベントをサブスクライブし、変更が見られるたびに親エンティティの検証を呼び出すことができます。

検証の例をブリーズのドキュメントに追加したいと考えています。このアイテムが役立つと思われる場合は、このアイテムを追加して、breeze User Voiceで投票してください。

お役に立てれば。

于 2013-01-17T18:19:08.337 に答える