我有一个视图模型:
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
答案 0 :(得分:15)
您无法在validatedObservable
级别重置,但可以在各个媒体资源上调用clearError
:
vm.reset();
console.log(vm.validation.isValid()); // output: false
prop1.clearError();
prop2.clearError();
console.log(vm.validation.isValid()); // output: true
注意:它仅适用于验证插件的“最新”版本,因此CDNJS和Nuget版插件中的clearError
不包含 。我的JSFiddle演示使用了GitHub的最新版本(9fd5a4d2da)。
答案 1 :(得分:11)
使用经过验证的observable时,我发现在清除了observable之后可以调用validatedObservable.errors.showAllMessages(false)
,这样做的方式与我在应用程序中的预期方式相同。