使用vue如何通过父组件监听子组件数据变化,并触发相应函数?
如题,我想要在vue父组件中监听子组件的数据变化,当数据变化的时候,触发父组件相应的函数。
以下仅为示意代码,并非项目源码,根据项目实际情况,请勿使用 $emit以及vuex来实现通信
父组件:
<template>
<div class="parent">
<child-component ref="child"></child-component>
<div class="tips">这里是父组件的数据:{{a}}</div>
</div>
</template>
<script>
import ChildComponent from "./ChildComponent.vue"
export default{
name: 'ParentComponent',
computed:{
a:{
get(){
this.fn(this.$refs.child.a);
return this.$refs.child.a;
}
}
},
methods:{
fn(val){
alert(val);
}
},
}
</script>
子组件:
<template>
<div class="child">
<div class="btn" @click="add">+1</div>
<div class="tips">这里是子组件的数据:{{a}}</div>
</div>
</template>
<script>
import ChildComponent from "./ChildComponent.vue"
export default{
name: 'ParentComponent',
data(){
return{
a: 0
}
},
methods:{
add(){
this.a ++;
}
},
}
</script>
求各位支招解决,谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
通过父组件通过 props把数据传给子组件,子组件改变
父组件每次传一个对象给子组件, 对象之间引用
= =你这个问题直接用官方的方式就能实现,你子组件自行监听自己的数据变化,然后$emit去调用父组件的方法就行了.
父组件在引用子组件时添加属性 @方法名A="父组件定义的方法" ,然后子组件中watch属性的变化,变化后执行 this.$emit('方法名A'),就可以出发"父组件定义的方法"
具体代码我就不贴了可以查看想 官方文档的 emit和父子通信相关