关于爷孙组件方法调用的例子

文章讲述了在项目开发中遇到爷孙组件的问题,即孙子组件的点击事件被爷爷组件的遮罩层遮挡。解决方案是通过爷爷组件提供自定义方法`closeMask`,孙子组件通过`inject`注入并调用该方法来关闭遮罩,实现组件间的通信.
摘要由CSDN通过智能技术生成

背景:在项目中遇到爷孙组件,在孙子组件中点击弹窗的时候会被爷爷组件中手写的遮罩层遮挡,需要在孙子组件中点击弹窗的时候关闭此遮罩。

解决:

首先在爷爷组件中写以下代码,closeMask为我自定义的方法名,用来关闭遮罩;

 provide(){
      return {closeMask:this.closeMask}
    },

然后在孙子组件中inject这个方法,并在孙子组件中直接调用即可。

inject:['closeMask'],

要让Vue孙组件调用组件方法,可以通过使用Vue的事件总线机制来实现。首先,在爷组件中创建一个事件总线对象,并将该对象挂载到Vue的原型上,以便在整个应用程序中都可以访问到该事件总线。然后,在爷组件中定义一个方法,该方法可以通过触发事件的方式将需要调用方法传递给孙组件。最后,在孙组件中通过订阅事件的方式来接收并调用组件传递的方法。 具体的步骤如下: 1. 在爷组件中创建一个事件总线对象,可以使用Vue实例作为事件总线对象,例如`const bus = new Vue()`。 2. 将事件总线对象挂载到Vue的原型上,以便在整个应用程序中都可以使用,例如`Vue.prototype.$bus = bus`。 3. 在爷组件中定义一个方法,用于被孙组件触发调用,例如`handleMethod(params)`。 4. 在爷组件中通过`this.$bus.$emit('event-name', params)`方式触发一个自定义事件,并传递需要调用方法及参数。 5. 在孙组件中通过`this.$bus.$on('event-name', method)`方式订阅该自定义事件,并在回调函数中调用组件传递的方法。 这样,当孙组件需要调用组件方法时,只需通过触发自定义事件的方式将需要调用方法传递给爷组件即可。 请注意,为了避免内存泄漏,应在孙组件销毁时取消订阅自定义事件,可以在`beforeDestroy`钩子函数中使用`this.$bus.$off('event-name')`取消订阅。 : https://blog.csdn.net/qq_41429394/article/details/105924171 : https://blog.csdn.net/u010358007/article/details/114862516 : https://blog.csdn.net/mldwyy/article/details/105415690
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值