想把父组件的值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... }
来响应子组件的状态
9 回答1.7k 阅读✓ 已解决
6 回答1.7k 阅读
3 回答1.5k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.2k 阅读
2 回答1.3k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
那个报错的大概意思是 避免在组件内运算props