У меня есть компонент Vue, который обрабатывает несколько форм, извлекает и отправляет данные из и в API форм Gravity.Все работает отлично, за исключением предварительного выбора значения по умолчанию для радиовхода (который представлен как переключатель).
Вот сокращенная версия компонента:
<template>
<form :id="gf" ref="form">
<div
v-for="field in fields"
:key="field.id"
:id="`field_${field.id}`"
:class="`field field__${field.type}`"
>
<div v-if="field.type == 'radio'">
<div v-for="(choice, index) in field.choices" :key="choice.value">
<input
type="radio"
:id="`gf_${index}_${field.id}`"
:name="`input_${field.id}`"
:value="choice.value"
v-model="entries[`input_${field.id}`]"
// insert way of checking input with isSelected == true here
>
<label :for="`gf_${index}_${field.id}`">{{ choice.text }}</label>
</div>
</div>
</div>
</form>
</template>
<script>
export default {
props: {
formId: {
type: String,
default: '',
},
formName: {
type: String,
default: '',
},
},
data() {
return {
fields: '',
form: '',
entries: {},
}
},
mounted: function() {
this.getForm()
},
methods: {
getForm() {
const vm = this
axios
.post('path/to/gravity/forms/api', {
id: vm.formId,
})
.then(result => {
vm.form = result.data
vm.fields = result.data.fields
})
.catch(err => {
console.log(err)
})
},
},
}
</script>
Обратите внимание, чтозначения передаются в форму правильным образом, но только при нажатии.Мне нужно найти способ автоматической проверки ввода на основе данных, полученных из API.
API возвращает простой массив для каждого радиовхода, вход по умолчанию (как определено в формах гравитации) выглядит следующим образом:
isSelected: true
text: "Email"
value: "Email"
Примечание: я прочитал много ответов на связанныепроблемы с переполнением стека, но решение неизменно включает в себя жесткое кодирование значений в данные, что невозможно.Также запись должна быть добавлена в указанном выше формате, чтобы API мог понять представление (код для этого не имеет значения, поэтому не включен).
Все предложения приветствуются.