父组件有一个popup window:
<div v-show="popup">
...
</div>
...
popup: true;
...
子组件有两个listener,通过
this.$parent.popup=true;
this.$parent.popup=false;
控制父组件的popup window的显示与隐藏
此外,父组件还包括一个类似刷新页面的component
<router-link to="/">
</router-link>
但是会有极少数时候出现信息窗不显示的情况,但是listener是起作用了的。出现这个bug的原因和操作暂时还不明确
发现这个问题之后:
在子组件的改变this.$parent.popup的值前consol.log了一下
console.log(this);
console.log(this.$parent);
发现每次进行router-link操作过后,控制台打印的this和this.$parent都会增加一个
猜想:只有最后打印的this和this.$parent才起展示作用
初步怀疑:
- 是某个父组件增加了一个但是子组件并未增加,导致子组件控制的是之前父组件的popup
- 某个子组件被销毁了无法link到当前父组件的popup
- ......