Была похожая задача, приходил объект описывающий поля формы, из которого нужно было сделать готовую форму.
Допустим такой объект:
{
form_id: 12,
submit_btn_text: 'Отправить',
post_url: 'https://someurl.com/api/',
form_fields: [
{ type: 'text', placeholder: 'some plshldr', label: 'some label', field_id: 'some_id' },
{ type: 'text', placeholder: 'some plshldr', label: 'some label', field_id: 'some_id' },
{ type: 'text', placeholder: 'some plshldr', label: 'some label', field_id: 'some_id' }
]
}
И заранее прописать для такой формы поля в data() не получится.
Я сделал это следующим образом:
в beforeMount() я пробегался по массиву form_fields и создавал новый объект (допустип field_models) с уникальными ключами для каждого поля и значением пустой строки (в зависимости от типа поля, там могли быть и чекбоксы). Далее в
template я итерировал этот массив (form_fields) вот так (при условии что нет чекбоксов)
<input v-for="field in form_fields" :type="field.type" :placeholder="field.placeholder" v-model="field_models[field.id] />