VUE子组件的watch不被触发

1. 起因

在父组件引入子组件,子组件引入dialog是一个弹框。

    a. prop:['flag']
    
    b.子组件是一个dialog弹框。
    
    c. 现在的效果是:刷新页面,第一次的弹框出现,将弹框关闭之后,再次点击,弹框不出现。    每次传递给子组件的flag值是一样,此时就不会触发子组件里面的  watch:{ flag: 'changeFlag' }  
指定的changeFlag方法。

2. 解决方法

a.父组件初始化一个字段:openDetailDialog: false
b.通过以下方式传递给子组件
open-detail-dialog="openDetailDialog"

在这里插入图片描述
c.子组件接收。从而触发方法

在这里插入图片描述

d. 关闭子组件弹框时需要注意:

在这里插入图片描述

e.通过$emit给父组件通知一个事件,父组件接收事件并作出处理,在处理的方法里面对this.openDetailDialog的值取反,

在这里插入图片描述

3.思路总结

Watch对应的监听方法不被触发,因为watch监听的key对应的 值没有发生变化, 所以加一个临时的变量,然后通过对其取反,来保证每一次watch监听的值与上一次不同,从而是watch事件生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值