JSON
{
"fields": [
{
"label": "Full Name",
"name": "fulllName",
"type": "text"
},
{
"label": "Owner",
"name": "owner",
"type": "text"
},
{
"label": "Date",
"name": "startDate",
"type": "date"
},
{
"label": "Time",
"name": "startTime",
"type": "time"
},
{
"label": "Notes",
"name": "Notes",
"type": "textarea"
}
]
}
HTML
<template>
<div>
Debug of Formdata: {{formData}}
<form>
<template v-for="({type, name, label}) in fields">
<label
:for="name"
:key="`label-${name}`"
>{{label}}</label>
<input v-if="type !== 'textarea'"
:type="type" :name="name"
:placeholder="label"
v-model="formData[name]"
:key="`field-${label}`" />
<textarea v-if="type === 'textarea'"
:name="name"
:placeholder="label"
:id="name"
v-model="formData[name]"
:key="`field-textarea-${label}`">
</textarea>
</template>
<input type="submit" value="Add" />
</form>
</div>
</template>
Javascript
const fields = require('./fields.json').fields;
export default {
data: () => ({
formData: {},
fields
})
};