问题怎么解决啊,伙伴们,有偿

我现在有这么一个问题,就是涉及到表单提交的弹窗,当用户提交表单后,我会把当前最新的数据一份传给后台,一份传给父组件(传给父组件是为了给父组件的table加一栏数据),并且在弹窗消失后,做表单状态清空的效果,但问题是我不知道为什么数据提交过去后是空的,好像是异步的问题,但是不知道怎么解决

img

你这个很明显是 传递参数的时候,又在下面清空的参数,你这个直接深拷贝一次就解决了,重新把值赋给另一个变量,再去传递给父组件

if (valid) {
                    let copyObj = {};
                    for (let key in this.dataSource) {
                        copyObj[key] = this.dataSource[key];
                        this.dataSource[key] = '';
                    };
                    console.log(copyObj)
                    this.$emit('cancelHeadDialog', copyObj)
                } else {
                    return false
                }

this.$refs.dataOrigin.validate的回调方法里的参数,应该有一个是data吧,里面是表单里面填的数据,直接用这个data传给后端试试

因为你清空了数据,object是引用数据类型,就导致所有引用该object的变量都为空。拷贝一份dataSource:

let dataSourceCopy = JSON.parse(JSON.stringify(this.dataSource))

用dataSourceCopy发送请求和父子传递

深拷贝一份传递给父组件呗,或者看你代码应该是用了弹窗,可以考虑打开弹窗的时候清空表单。

用的内存地址一样

用一个深拷贝操作另一个对象,不要改变原有的数据结构

传了后下面又清空了,深拷贝一下