Vuelidate стреляет несколько раз при загрузке страницы - PullRequest
0 голосов
/ 30 января 2019

Я использую Vue, а для проверок Vuelidate .

При использовании пользовательского валидатора, который выполняет вызов AJAX, он запускается несколько раз назагрузка страницы и даже до взаимодействия с пользователем (vuelidate's $touch).

После этих многочисленных вызовов при первой загрузке проверка работает правильно.(Я использую эту проверку при изменении ввода, используя vue @change)

Я попытался установить флаг isMounted для выполнения проверок внутри пользовательского валидатора только после загрузки всего экземпляра, но безуспешно.

КОД

Валидатор (только с отладкой, для тестирования):

validations() {
    return {
        myFieldToValidate(field) {
            test_validation(value) {
                console.log('test validation fired!', Math.random());
                return true;
            }
        }
    }
}

Затем при перезагрузке страницы запускается нескольковремена:

multiple-calls

Я хочу сделать проверку "пожарной", основываясь только на моем событии (изменение ввода), а не несколько раз при загрузке страницы.Как этого добиться?

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Я закончил делать свою собственную функцию, которая делает вызов ajax, отделившись от vuelidate.Я использовал lodash '_.debounce для управления вызовами.

Я связал функцию с событием @input, сделал вызов ajax на его основе и возвратил «флаг»атрибут с результатом.

Затем я использую этот флаг, чтобы проверить допустимость поля.

При использовании этого ограничения событие не запускается несколько раз при загрузке страницы.

0 голосов
/ 04 февраля 2019

@change.once должен сделать трюк

см. Ссылку для получения дополнительной информации https://vuejs.org/v2/api/#vm-once

...