Итак, я хочу адаптировать именование автозаполнения к дням рождения. Однако это приводит к нескольким проблемам. Теперь мне нужно выяснить, могу ли я заставить vee-validate изменить имя поля.
Чтобы понять это лучше. Вот как это выглядит в настоящее время:
<select
v-model="day"
id="day"
name="day"
:class="{'invalid' : errors.has('day')}"
v-validate="'required|excluded:0'"
>
<option
:disabled="true"
value="0"
v-text="trans('food.Day')"
/>
<option
v-for="n in 31"
:key="n"
:value="n"
v-text="n"
/>
</select>
<span
class="bar"
:class="{'invalid' : errors.has('day')}"
/>
Имя для поля выбора - "день".
Однако, согласно this , оно должно называться: "bday-day".
Поскольку я использую vee-validate, это приводит к переименованию имени поля в "bday-day". Теперь errors.has('day')}
больше не будет работать.
Но даже если я изменю это значение на errors.has('bday-day')
, я не смогу использовать свой внутренний наблюдатель для изменений значений. Я получаю ошибку:
Неудачный путь просмотра: наблюдатель "bday-day" принимает только простые пути с разделителями точками. Для полного контроля используйте функцию.
Это потому, что мне нужно задать одно и то же имя для v-модели и для vee-validate. v-model="bday-day"
не может работать.
Чтобы сделать его коротким. Моя конечная цель примерно такая:
<select
v-model="day"
id="day"
name="bday-day"
:class="{'invalid' : errors.has('day')}"
v-validate="{required: true, excluded: 0, name: 'day'}"
>
<option
:disabled="true"
value="0"
v-text="trans('food.Day')"
/>
<option
v-for="n in 31"
:key="n"
:value="n"
v-text="n"
/>
</select>
<span
class="bar"
:class="{'invalid' : errors.has('day')}"
/>
Я бы использовал name="bday-day"
для автозаполнения, но я бы установил имя поля для vee validate на name: 'day'
.