Устранить ошибку при Knockout-Validation

У меня есть настройка страницы с Knockout.js и использование Knockout-Validation.

Во время загрузки страницы я помещаю другой плагин в поле выбора, которое запускает изменение, которое запускает проверку. Мне нужно иметь возможность сбросить эту ошибку с помощью JS, чтобы я мог начать с нового пользовательского интерфейса и оставить отзыв о публикации формы или выбрать изменение поля.

Я не могу найти ничего, что позволило бы мне сбросить ошибку в Knockout-Validation.


person Clarence Klopfstein    schedule 05.12.2012    source источник


Ответы (5)


Вероятно, лучший способ следовать тому, что уже реализовано в проверке нокаута, - это сказать property.isModified(false);

если у вас есть целая модель представления для сброса, просто переберите все проверенные свойства и вызовите это isModified(false)

См. комментарий Эрика Барнарда

надеюсь, это поможет

person Code Novitiate    schedule 24.01.2013
comment
Спасибо. Кроме того, это может быть очевидно для других, но вы должны сделать это после того, как очистите поле. Пример: _thisComment(''); _this.Comment.isModified(false). Легкий сброс проверки. - person Brian Rosamilia; 19.05.2013
comment
это именно то, что showAllMessages(false) делает внутри, как ответил @yoann - person Simon_Weaver; 07.05.2014

Поздний ответ, но если кому-то это нужно:

// assuming the ko.observable on the checkbox is called propBoolean
var propBooleanlValid = ko.validation.group(self.propBoolean, { deep: false });
propBooleanlValid .showAllMessages(false);

Это скроет сообщение до следующей проверки.

person Yooz    schedule 06.06.2013
comment
Это прекрасно работает, спасибо! Это должно быть в документах проверки ko. - person Ross; 29.04.2014
comment
примечание: убедитесь, что в вашей конфигурации есть messagesOnModified: true. если это ложь, то сообщение будет отображаться всегда - person Simon_Weaver; 07.05.2014
comment
я чувствую, что это лучший из трех - person Muhammad Raheel; 23.07.2014

Нашел ответ, реализовав этот запрос на извлечение.

https://github.com/Knockout-Contrib/Knockout-Validation/pull/184

Дает мне функцию, которая мне нужна.

person Clarence Klopfstein    schedule 05.12.2012
comment
Не в обиду, но я чувствую, что этот ответ не тот, который люди должны принимать в качестве действия, когда им нужна эта функциональность. откуда мой минус. Тем не менее, я проголосовал за ваш вопрос, он хороший! :) - person Code Novitiate; 07.02.2013

Один из способов решить эту проблему — использовать собственный валидатор, где вы проверяете наличие флага в своей модели представления, например ignoreValidation. Если этот флаг истинен, вы позволяете валидатору пройти проверку.

Пример того, как будет выглядеть этот валидатор:

viewmodel.userHasPremiumMembership.extend({
    validation: [
        {
            validator: function () {
                if (viewmodel.ignoreValidation) {
                    return true;
                }

                return viewmodel.userHasPremiumMembership();
            },
            message: 'User needs to have premium membership.'
        }
    ]
});
person Yamo93    schedule 01.12.2020

Если вы используете диспетчер сущностей, не включайте entityAspect в проверку, так как он связан со всеми другими сущностями. Также см. Как откатить ошибки проверки нокаута?

person Stefan    schedule 14.07.2016