想把父组件的值dialog传给子组件apply然后通过点击关闭遮罩层,dialog是控制遮罩层的,也试过props了。但是报错是怎么回事??
父
子
因为父组件里修改了props属性,会覆盖子组件里的值,所以你在子组件里面直接用this.dialog = !this.dialog会产生一个警告(并非错误,功能还是都是正常的)。你可以把这个替换成this.$emit('close'); 再在父组件里处理这个事件,修改dialog的值。
传值的方式不对,在vue2中有两种办法,一种是在父组件中传一个v-model="outerLoading",然后子组件里面
watch:{
outerLoading: {
immediate: true,
handler() {
this.innerLoading = v
}
},
innerLoading (v) {
this.emit('input', v)
}
}
这样outLoading就会响应innerLoading,实现双向绑定的功能。
还有一种做法和这个类似,就是把this.emit('input', v)换成this.emit('eventName', v),然后在父组件中@eventName="eventFunc", 再通过父组件中的eventFunc(v) { //code... }来响应子组件的状态
11 回答1.2k 阅读
4 回答564 阅读✓ 已解决
3 回答859 阅读
2 回答591 阅读
1 回答687 阅读
那个报错的大概意思是 避免在组件内运算props