清除或重置敲除验证validatedObservable?

时间:2013-07-29 17:38:50

标签: knockout-validation

我有一个视图模型:

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
};

通过validatedObservable正确验证属性prop1和prop2,但是当我执行resetFields时,这些属性会因为它们已被修改而需要有错误。

有没有办法重置已验证的observable,好像它没有被更改?

更新:我是从NuGet采购knockout.validation,并使用v1.0.1

2 个答案:

答案 0 :(得分:15)

您无法在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)。

答案 1 :(得分:11)

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