これに対する解決策が見つからないので、ここに私の問題があります:
コレクションにアイテムを追加できる小さなフォームの検証を設定しました(observableArray、後でDBに実際に保存します)。
検証は最初のアイテムに対しては正常に機能し、検証メッセージが表示されますが、2 回目は検証メッセージが表示されません (検証自体は機能し、アイテムを追加することはできません)。
これが私がすることです:
たとえば、 newSchool オブジェクトで検証を設定します
self.City = ko.observable(item ? item.City : '').extend( { required: true });
MainViewModel で検証グループを作成する
self.schoolErrors = ko.validation.group({ schools: self.newSchool }, { deep: true });
MainViewModel: エラーをチェックし、そうでなければコレクションにプッシュし、newSchool オブザーバブルを新しいデフォルト値で初期化します
self.addSchool = function () { if (self.schoolErrors().length > 0) { self.schoolErrors.showAllMessages(); return; } self.schools.push(self.newSchool()); self.newSchool(new School()); self.newSchool().load(); self.schoolErrors = ko.validation.group({ schools: self.newSchool }, { deep: true }); };
デバッグ上の理由から、学校オブジェクトの検証済みオブザーバブルの isValid および isModified 値を出力しました。これらは問題ないようです。最初のアイテムを挿入した後、 isValid と isModified は両方ともfalseに返されます。
唯一の問題は、前述のとおり、検証メッセージが表示されなくなったことです。
私にとっても奇妙です。計算フィールドに対して検証する必要がある1つのケースを除いて、カスタム検証メッセージテンプレートを使用しません。これは表示されますが、「組み込み」の検証メッセージは表示されません。
何か案が?