$listeners
用于底层组件向高级层组件传递信息。
例如有 父组件A,子组件B,孙组件C 三个组件,如果C传递信息给B则可直接使用emit,如果是C向A传递信息还使用emit,则就需要C先emit给B,B再emit给A,这种方式比较繁琐,则此时可以使用v-on="$listeners"来满足当前需求。
用例:
C组件
javascript
<template>
<div @click="onClick">C组件</div>
</template>
onClick(){
this.$emit("Msg",'123')
}
B组件
javascript
<template>
<cCom v-on="$listeners"/>
</template>
A组件
javascript
<template>
<bCom @Msg='Msg'/>
</template>
methods:{
Msg(val){
console.log(val) //123
}
}
组件隔代通讯其它相关用法:
[Vue中v-bind="attrs"的使用方法https://blog.csdn.net/weixin_44594219/article/details/127257804?spm=1001.2014.3001.5502](https://blog.csdn.net/weixin_44594219/article/details/127257804?spm=1001.2014.3001.5502 "Vue中v-bind=“attrs”的使用方法")vue2中EventBus的使用方法https://blog.csdn.net/weixin_44594219/article/details/127248681?spm=1001.2014.3001.5502