父组件table,子组件dialog,为了保证dialog中数据变化,不影响父组件的显示,(为什么会有影响,主要赋值的时候,直接使用“=”的话,对象的引用地址是一样的,所以当dialog变化时,尽快没有保存,但还是会影响table中数据的显示)需要在父组件中,给子组件的传的值进行转换
this.data= JSON.parse(JSON.stringify(row));
子组件中也需要使用watch进行监听,重新赋值
watch: { data(val, oldVal){ this.form = val }, }
关于检验清空的问题出现的原因是:我们在每次新增数据的时候,尽管数据可能都是必填的,但是我们一打开弹窗的时候,还是希望没有检验的,当我们change的时候,再进行数据的检验。而由于我们大部分的时候,编辑的弹窗和新增的弹窗都是同一个,这导致我们在操作完编辑弹窗,在点击新增弹窗的时候,发现数据都进行了检验,其实这个时候是不需要的。
对于这个问题,我的处理方法是,每次关闭弹窗的时候,清空弹窗中的数据,没有打开弹窗的时候,清空校验规则
// 父组件 操作弹窗的时候,清空检验规则 this.$refs.child.clearValidate(); //子组件 每次关闭的时候,数据清空 //清空校验的方法 clearValidate() { if(this.$refs.form) { this.$refs.form.clearValidate(); } }, //清空数据 this.form = {}