14

私はそのようなビューモデルを持っています:

var prop1 = ko.observable().extend{ required: true },
    prop2 = ko.observable().extend{ required: true };

var validation = ko.validatedObservable([prop1, prop2]);

function resetFields() {
    prop1(undefined);
    prop2(undefined);
}

var vm = {
    prop1: prop1,
    prop2: prop2,
    validation: validation,
    reset: resetFields
};

プロパティ prop1 と prop2 は、validatedObservable を介して正しく検証されていますが、resetFields を実行すると、これらのプロパティは変更されており、必要であるため、エラーが発生します。

あたかも変更されていないかのように、検証済みのオブザーバブルをリセットする方法はありますか?

更新: NuGet から knockout.validation を調達し、v1.0.1 を使用していました

4

2 に答える 2

18

レベルでリセットすることはできませんが、個々のプロパティvalidatedObservableを呼び出すことができます:clearError

vm.reset();
console.log(vm.validation.isValid()); // output: false
prop1.clearError();
prop2.clearError();
console.log(vm.validation.isValid()); // output: true

JSFiddle のデモ。

注:検証プラグインの「最近の」バージョンでのみ機能するため、プラグインの CDNJS および Nuget バージョンにはclearError 含まれていません。私の JSFiddle デモでは、GitHub の最新バージョン ( 9fd5a4d2da ) を使用しています。

于 2013-07-29T19:03:20.943 に答える
12

検証済みのオブザーバブルを使用すると、オブザーバブルをクリアした後に呼び出すことができることがわかりましたvalidatedObservable.errors.showAllMessages(false)。これは、アプリケーションで期待していたとおりに動作しています。

于 2013-09-27T07:32:51.623 に答える