Подтвердить что ты не робот

Очистка или сброс проверки валидации нокаута?

У меня есть модель представления как таковая:

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

4b9b3361

Ответ 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) после того, как вы очистили наблюдаемый, который ведет себя так, как я ожидал в своем приложении.