vue一个页面多个组件,点击提交同时保存三个组件所有表单值(二)

项目中遇到一个特殊需求,页面分为三个组件表单,每个组件都有保存和提交按钮。当点击任一组件的保存或提交时,需同步保存所有组件的表单数据。解决方案是在父组件中通过车牌号等标识统一处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

需求:一个页面多个组件,点击提交同时保存三个组件所有表单值。

场景:一个页面的表单太多分为三个页面来提交,每个页面都有保存和提交的按钮。要求每个页面如果不同的人填写的话,点击当前页面的保存或者提交按钮,三个组件中的所有表单都会被提交。类似下面这种
在这里插入图片描述


问题描述

提示:如何在某个组件中点击保存时,每个表单都保存。 思路:获取三个组件实例拿到form表单值。再请求接口,统一提交。 遇到的问题:在某个页面有个车牌号,需要获取,但是车牌号是汉字和字母拼接的数据,所以,我在该页面点击保存的时候,采取拼接车牌号。后来发现我点击其他界面的时候,车牌号总是为空,拿不到数据。发现拼接字符串不能在组件中,而应该在父组件中,统一提交表单之前,不然只有在点击保存的时候能获取到,那其他页面点击保存的时候,当然就获取不到了。

解决:在父组件中凭借车牌号。

save() {
   
     
      let f
要实现一个页面多个组件表单同时保存,可以使用事件总线(Event Bus)或 Vuex 状态管理工具。 1. 使用事件总线 在 main.js 中创建一个全局的事件总线: ``` import Vue from 'vue' export const bus = new Vue() ``` 在组件中监听表单变化事件: ``` import { bus } from '@/main' export default { data() { return { formValue: {} } }, methods: { save() { bus.$emit('form-changed', this.formValue) } } } ``` 在另一个组件中监听事件并保存表单: ``` import { bus } from '@/main' export default { data() { return { formValue: {} } }, created() { bus.$on('form-changed', formValue => { this.formValue = formValue }) } } ``` 2. 使用 Vuex 安装 Vuex 并创建 store: ``` npm install vuex ``` ``` import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ state: { formValues: {} }, mutations: { setFormValue(state, payload) { state.formValues[payload.componentName] = payload.formValue } } }) ``` 在组件提交表单到 store: ``` import store from '@/store' export default { data() { return { formValue: {} } }, methods: { save() { store.commit('setFormValue', { componentName: 'component1', formValue: this.formValue }) } } } ``` 在另一个组件中从 store 获取表单: ``` import { mapState } from 'vuex' export default { computed: { ...mapState(['formValues']), formValue2() { return this.formValues.component2 || {} } } } ``` 当保存按钮被点击时,你可以同时启动所有组件表单保存逻辑。然后使用事件总线或 Vuex 来将所有组件表单进行保存
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值