VUE父子组件传值问题

问题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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值