10

ノックアウト検証を使用して、配列内のフィールドを検証しています。エラーメッセージが表示されますが、isValid()またはko.validation.group()を機能させることができません。送信を処理するには、これらの1つが必要です。

errors = ko.validation.group(contactList(), {deep:true});

これがフィドルです:http://jsfiddle.net/mduey/hEJWJ/80/

ありがとう!

4

2 に答える 2

5

同じ問題が発生しましたが、observableconfigプロパティをfalseに設定することで解決できます。これにより、エラー関数が呼び出されるたびに詳細な検証がトリガーされます。

    ko.validation.init({
        grouping: {
            deep: true,
            observable: false //important ! Needed so object trees are correctly traversed every time so added objects AFTER the initial setup get included
        },
        insertMessages: true,
        messagesOnModified: true,
        debug: false
    });
于 2013-05-24T13:18:42.143 に答える
3

問題は、に新しい配列要素を追加したときに検証が実行されないことですobservableArrayこれは、さらに最適化できる簡単なダーティソリューションです。

検証を実行する新しい要素を追加するたびに、observableArrayその結​​果を監視可能にして、ビューバインディングによって適切に追跡できるようにします。設定によりさらに改善できるthrottleため、アレイへのプッシュごとに検証が実行されるわけではありません(実際にはサイクルの場合)。私が見ているように、現在ko.validation.group、適切な監視可能ではないリターンが表示されるため、ラッパーを作成する必要がありました。

于 2012-11-10T00:18:59.330 に答える