У меня есть простой компонент Form с опцией select. Всякий раз, когда я выбираю опцию, дочерний компонент отображается внутри моего основного компонента. Моя проблема в том, что я не могу заставить Vue связать данные моего родительского компонента с данными дочернего компонента.
form.settings
- это Dynami c, поэтому я не могу установить свойства перед рукой на Form.vue
.
Эта форма отправляется в веб-приложение Spring-boot через ax ios, и я вижу, что form.settings
является нулевым на стороне клиента, когда я отправляю форму.
Я новичок в Vue и вот моя попытка:
Форма. 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>