ノックアウト検証を使用して、配列内のフィールドを検証しています。エラーメッセージが表示されますが、isValid()またはko.validation.group()を機能させることができません。送信を処理するには、これらの1つが必要です。
errors = ko.validation.group(contactList(), {deep:true});
これがフィドルです:http://jsfiddle.net/mduey/hEJWJ/80/
ありがとう!
ノックアウト検証を使用して、配列内のフィールドを検証しています。エラーメッセージが表示されますが、isValid()またはko.validation.group()を機能させることができません。送信を処理するには、これらの1つが必要です。
errors = ko.validation.group(contactList(), {deep:true});
これがフィドルです:http://jsfiddle.net/mduey/hEJWJ/80/
ありがとう!
同じ問題が発生しましたが、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
});
問題は、に新しい配列要素を追加したときに検証が実行されないことですobservableArray
。これは、さらに最適化できる簡単なダーティソリューションです。
検証を実行する新しい要素を追加するたびに、observableArray
その結果を監視可能にして、ビューバインディングによって適切に追跡できるようにします。設定によりさらに改善できるthrottle
ため、アレイへのプッシュごとに検証が実行されるわけではありません(実際にはサイクルの場合)。私が見ているように、現在ko.validation.group
、適切な監視可能ではないリターンが表示されるため、ラッパーを作成する必要がありました。