I have a simple Form component with just a select option. Whenever I choose an option, a child component is rendered inside my main component. My problem is I can't get Vue to bind my parent component data with child component data.
form.settings is dynamic so I can not set the properties before hand at Form.vue.
This form is submitted to a Spring-boot web application via axios and I see that form.settings is null on client side when I submit the form.
I am new to Vue and here is my attempt:
Form.vue
<template>
<div>
<form>
<div>
<select v-model="form.type">
<option></option>
<option value="1">1</option>
<option value="2">2</option>
</select>
</div>
<PresetOne v-if="form.type == '1'" :settings="form.settings"/>
<PresetTwo v-if="form.type == '2'" :settings="form.settings"/>
</form>
</div>
</template>
<script>
import PresetOne from "@/components/PresetOne"
import PresetTwo from "@/components/PresetTwo"
export default {
name: "SettingsForm",
data: () => ({
form: {
type: null,
settings: null
}
}),
components: {
PresetOne,
PresetTwo
}
}
</script>
PresetOne.vue
<template>
<div>
<input v-model="settings.username" />
<input v-model="settings.password" />
</div>
</template>
<script>
export default {
name: "PresetOne",
data: () => ({
settings: {
username: null,
password: null
}
})
}
</script>
PresetTwo.vue
<template>
<div>
<input v-model="settings.email" />
<input v-model="settings.password" />
</div>
</template>
<script>
export default {
name: "PresetTwo",
data: () => ({
settings: {
email: null,
password: null
}
})
}
</script>