Очистка или сброс проверки валидации нокаута?
У меня есть модель представления как таковая:
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 эти свойства затем имеют ошибки на них, поскольку они были изменены и необходимы.
Есть ли способ reset проверенный наблюдаемый, как если бы он не был изменен?
Обновление: Я искал нокаутом из базы данных NuGet и использовал v1.0.1
Ответы
Ответ 1
Вы не можете reset на уровне 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 использует последнюю версию (9fd5a4d2da) из GitHub.
Ответ 2
При использовании проверенного наблюдаемого я обнаружил, что вы можете вызвать validatedObservable.errors.showAllMessages(false)
после того, как вы очистили наблюдаемый, который ведет себя так, как я ожидал в своем приложении.