问题1:开发过程中发现父组件 调用 子组件后 子组件 更改提交 操作完成后,无法自动关闭
问题2:开发过程中发现父组件 调用 子组件后 子组件更改对象信息 父组件也跟着一起更改
问题3:开发过程中发现父组件 调用 子组件后 子组件 更改提交 操作未完成 重新点击 编辑 对象框内信息仍保留上次更改结束的信息
/*父组件*/
/*
v-bind:数据绑定
@aclose="close":使子组件可调用父组件方法
ref="ref1":绑定ref,后面调用this.$refs.ref1.init();子组件重新初始化
*/
<el-dialog title="部门维护" :visible.sync="dialogTableVisible" width="580px" >
<deptdetail v-bind:data1="data1" v-bind:data2="data2" @aclose="fatherFunction" ref="ref1"></deptdetail>
</el-dialog>
<script>
export default {
data: function() {
return {
dialogTableVisible:false
};
},
methods: {
// 关闭操作执行的方法
fatherFunction:function(){
this.dialogTableVisible = false; //关闭子页面
this.$refs.ref1.init(); // 子组件重新初始化
},
}
}
</script>
/*子组件*/
<script>
export default {
props: {
data1: Object,
data2:Array,
},
data: function() {
return {
formData:[];
};
},
watch:{
// 避免子组件更改对象信息 父组件也跟着一起更改
// 在子组件中拷贝父组件的值JSON.parse(JSON.stringify(this.newVal));
data1(newVal,oldVal){
debugger
var that = this;
that.formData = JSON.parse(JSON.stringify(this.newVal));
}
},
methods: {
init:function(){
// 子组件初始化
that.formData = JSON.parse(JSON.stringify(this.newVal));
},
needcolse:function(){
that.$emit("aclose"); // 需要关闭组件的时候调用父组件的关闭方法
},
}
}
</script>