vue中$listeners

vue中$listeners

详细

包含了父作用域中的 (不含 .native 修饰器的) v-on 事件监听器。它可以通过 v-on="$listeners" 传入内部组件——在创建更高层次的组件时非常有用。

理解

$listeners相当于一个中间容器。可以用于解决组件嵌套,孙组件传递数据给 祖父组件。

当出现多级组件嵌套时(例如 A 嵌套 B , B嵌套C ),C想传递数据A,就需要在B中给C 设置v-on=“$listeners”,然后通过@XX(具体时间)的方式获取C传递过来的数据。

使用

// A组件
<template>
    <B @getData="getData"></B>
</template>
<script>
export default {
    methods: {
       getData(data){ 
         //获取c 传递的数据
      }
    }
}
</script>

// B组件
<template>
    <C v-on="$listeners" ></C>
</template>

//C组件
<template>
    <button  @click="postData">传递数据</button>
</template>
<script>
export default {
    methods: {
       postData(){ 
         this.$emit('getData','传递数据给A')
      }
    }
}
</script>

组件封装 

对一些UI库进行二次封装用,或者项目中已有的组件的二次封装,进行功能扩展,不影响原有功能,比如element-ui。

<template>
    <el-checkbox v-on="$listeners" v-bind="$attrs"  @click="myClick">
        <slot></slot>
    </el-checkbox>
</template>

<script>
export default {
    name: 'mCheck',
    inheritAttrs: false,
    data() {
        return {
        }
    },
    methods: {
        myClick() {
           // 自定义触发事件
        }
    }
}
</script>
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值