Vue组件自定义事件传递(绑定、解绑)

父组件:

<div>
      <!-- <val v-on:chang="demo"></val> -->
      <!-- 简写 -->
      <!-- <val @chang="demo"></val> -->
      <!-- 通过ref传事件 灵活性更高 -->
      <val ref="valref"></val>

      <!-- 也可以给组件绑定原生的事件 加上.native  给组件最外层的根元素绑定-->
      <!-- <val @click.native="demo"></val> -->
</div>

//可以通过以上方法传递事件给子组件

//先定义一个demo事件

methods:{
        demo(name){
            console.log('我被调用的了,我的参数是:',name);
        }
        //参数多的话  可以用下面方法把后面的参数集合成一个数组
        // demo(name,...params){
        //     console.log('我被调用的了,我的参数是:',name,params);
        // }
    },

//ref绑定
mounted(){
        //可以定义为异步  如果直接绑定就定义不了 所以ref更加的灵活
        setTimeout( () => {
            this.$refs.valref.$on('chang',this.demo)
            //触发一次不触发了
            // this.$refs.valref.$once('chang',this.demo)
        },3000)
    }

子组件:

<div>
      <button @click="sendchang">触发父组件事件</button>
      <button @click="unsendchang">解绑父组件事件</button>
  </div>

 data(){
        return{
            name:'我是参数name'
        }
    },
    methods:{
        //通过触发sendchang  来触发父组件定义的chang事件 可以传多个参数
        sendchang(){
            this.$emit('chang', this.name);
        },

        //解绑
        unsendchang(){
            // this.$off('chang') // 解绑单个
            // this.$off(['chang','chang2']) //解绑多个
            this.$off() //解绑所有
        }
    },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值