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 正在通过 validObservable 正确验证,但是当我执行 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。

注意:它仅适用于“最新”版本的验证插件,因此clearError 不包含在 CDNJS 和 Nuget 版本的插件中。我的 JSFiddle 演示使用来自 GitHub的最新版本 ( 9fd5a4d2da )。

于 2013-07-29T19:03:20.943 回答
12

当使用经过验证的 observable 时,我发现您可以validatedObservable.errors.showAllMessages(false)在清除 observable 后调用,这与我在应用程序中所期望的方式相同。

于 2013-09-27T07:32:51.623 回答