Подтвердите vue-select с помощью vee-validate

Я новичок в VueJS.

Я пытаюсь проверить vue-select с помощью vee-validate.

Я пытался проверить это вручную, но, конечно, это не лучший подход.

Итак, я попытался использовать vuelidate, но не смог добиться желаемого результата.

Теперь я пытаюсь использовать vee-validate. Проверка работает нормально по желанию

введите описание изображения здесь

но проблема в v-модели.

Я создал глобальную переменную product для вычисления длины массива и передал ее в v-model. Так что, когда значение его пустого продукта будет равно нулю, и я могу вернуть желаемый результат из vee-validation.

Вот HTML-часть .vue.

<ValidationObserver>
  <form @submit.prevent="add">
    <div class="row row-xs mx-0">
      <label class="col-sm-4 form-control-label">
        <span class="tx-danger">*</span> Add product(s):
      </label>
      <div class="col-sm-8 mg-t-10 mg-sm-t-0">
        <ValidationProvider rules="required" v-slot="{ errors }">
          <v-select
            name="product"
            placeholder="Add product(s)"
            :options="availableProducts" <-- here is the options array
            :reduce="name => name"
            label="name"
            @input="setSelected"
            v-model="product" <-- this calculates length and pass it to vee **extends**
          >
          </v-select>
          <div v-for="error in errors" :key="error"> {{ error }} </div>
          </ValidationProvider>
      </div>
      <!-- col-8 -->
    </div>
  </form>
</ValidationObserver>

Вот файл validation.js

import { extend } from 'vee-validate';

extend('required', value => {
    console.log(value);
    return value > 0;
});

введите описание изображения здесь

Мне не нужна ценность этого продукта. Я тоже знаю, что это не лучший подход. Я не могу передать весь массив в v-модель, потому что тогда я не могу добавить в него параметры. Я тоже не могу передать ни одной опции v-модели, тогда я не получу желаемого результата.

Все, что я хочу проверить v-select, когда массив параметров пуст. Есть предложения?


person Zeeshan Malik    schedule 01.09.2020    source источник


Ответы (1)


Veevalidate не проверяет непосредственно выбранные элементы. Это мой обходной путь.

Вы должны создать v-field скрытый ввод и видимый select v-model элемент. veevalidate состоится на v-field.

Вот пример.

<v-field type="text" class="form-control disabled" name="expirationMonth" v-model="expirationMonth" :rules="isRequired" style="display:none;"></v-field>
<select v-model="expirationMonthUI" class="form-control" @click="synchExpirationMonthUI">
                                    <option value="January">January</option>
                                    <option value="February">February</option>
                                    <option value="March">March</option>
                                    <option value="April">April</option>
                                    <option value="May">May</option>
                                    <option value="June">June</option>
                                    <option value="July">July</option>
                                    <option value="August">August</option>
                                    <option value="September">September</option>
                                    <option value="October">October</option>
                                    <option value="November">November</option>
                                    <option value="December">December</option>
                                </select>
<error-message name="expirationMonth"></error-message>

Затем добавьте это в свои методы, чтобы синхронизировать их вместе.

synchExpirationMonthUI() {
     this.expirationMonth = this.expirationMonthUI;
}
person Pinch    schedule 18.02.2021