我对Vue比较陌生,正在进行我的第一个项目。我正在创建一个包含几个子组件和孙组件的表单。我遇到了一个问题,我需要生成表单的多个副本。因此,我将一些数据属性上移了一级。目前,表单是ApplicationPage.Vue〉TheApplication.Vue〉PersonalInformation.Vue〉BaseInput.Vue。我的问题是我需要通过TheApplication将更改从PersonalInformation发送到ApplicationPage。我很难弄清楚如何处理这种情况。我一直在为Vue2寻找解决方案,但没有为Vue3找到。
- 应用程序页面. vue**
template
<TheApplication :petOptions="petOptions"
:stateOptions='stateOptions'
v-model="data.primary"
applicant="Primary"/>
script
data() {
return {
data: {
primary: {
personalInformation: {
first_name: "",
middle_name: "",
last_name: "",
date_of_birth: "",
phone: null,
email: "",
pets: "",
driver_license: null,
driver_license_state: "",
number_of_pets: null,
additional_comments: ""
},
},
},
}
},
- 应用程序. Vue**
x一个一个一个一个x一个一个二个x
- 个人信息.版本**
一个三个三个一个
2条答案
按热度按时间pcww981p1#
我会这么做:codesandbox
emits只接受两个参数,即发射的名称和发射的值。如果发射多个值,则必须将这些值作为单个对象发射。在我的解决方案中,孙组件将字段名称和值作为单个对象发射
子对象捕获并重新发出的对象,但首先注意以父组件预期的格式发出(它预期整个
data.primary
对象,因为这是设置为v模型的对象)一个二个一个一个
然后,父组件自动接收并更新v模型
data.primary
对象。bpzcxfmw2#
对于任何不想链接事件发射的人来说,子对象上有一个父对象,也可以用来发射事件。请确保在父对象中注册发射,以避免控制台中出现警告。
孩子
在此调用直接父级的
$emit
。或使用方法:
x一个一个一个一个x一个一个二个x
父母
因为是父节点向祖先节点发射,所以在这里声明发射。对于
<script setup>
,只需使用defineEmits()
方法来声明发射。参见文档。一个三个三个一个
如果使用
<script setup>
祖父母
然后侦听祖父组件中的事件。