Vee validate: isBetween пользовательское правило с параметрами не работает - PullRequest
1 голос
/ 26 марта 2020

проверить, и я пытаюсь создать несколько правил для моего текстового поля, например: required, minlength, maxLength и соединить их вместе, и основываясь на том, что c h параметр передается в проверку преформ

Так что я попытался использовать пример из документов:

http://vee-validate.logaretm.com/v2/guide/custom-rules.html#args -и-правило-конфигурации

const isBetween = (value, { min, max } = {}) => {
  return Number(min) <= value && Number(max) >= value;
};

// The first param is called 'min', and the second is called 'max'.
const paramNames = ['min', 'max'];

Validator.extend('between', isBetween, {
  paramNames //  pass it in the extend options.
});

И моя Vue модель выглядит следующим образом:

 <ValidationProvider
                    v-if="item && item.type === 'TEXT_AREA'"
                    :rules="`isBetween:true, 10`"
                    v-slot="{ errors, valid, validate }"
                >
                    <b-form-textarea
                        size="sm"
                        :id="`attribute`"
                        :value="attributeValue"
                        @input="addAttributeValue($event, uid, validate)"
                    />
                    <span>{{ displayError(errors) }}</span>
                </ValidationProvider>

Здесь я пытаюсь передать параметры IsBeterrn, такие как: required, length и на их основе, для проверки правильности, но я всегда получаю значение min & max как ноль, а аргументы - это массив вместо объекта

Также мой второй вопрос, как я буду использовать обязательный от vee-validate в моем собственном правиле

1 Ответ

1 голос
/ 26 марта 2020

У вас есть два способа задания параметров: со строками или с объектами. Я предлагаю вам использовать метод объекта следующим образом:

<ValidationProvider
   :rules="{between:[0, 10]}"
>

У вас была пара ошибок - правило называется between, потому что вы его так называли, когда делали это:

Validator.extend('between', isBetween, {
  paramNames //  pass it in the extend options.
});

Кроме того, вы не можете использовать логическое значение и число в качестве параметра, как вы это сделали здесь:

                :rules="`isBetween:true, 10`"

Способ, который я указал, с помощью :rules="{between:[0, 10]}" также позволяет вам сделать переменную min и max если вы хотите, то есть если у вас есть элемент данных компонента под названием minValue, вы можете использовать его в правиле, подобном этому :rules="{between:[minValue, 10]}", и ваши правила будут реагировать на изменения в minValue.

...