当前位置:   article > 正文

Vue (12) — 组件的自定义事件_this.$refs.student.$on('fruit',this.getstudentname

this.$refs.student.$on('fruit',this.getstudentname)

目录

一、什么是组件的自定义事件

二、使用场景

三、绑定自定义事件

  1.第一种方式

  2.第二种方式

  3.备注

四、触发自定义事件

五、解绑自定义事件

六、绑定原生DOM事件

七、注意


一、什么是组件的自定义事件

        组件的自定义事件是一种组件间通信方式,它适用于:子组件 ==> 父组件

二、使用场景

        A是父组件,B是子组件,B想给A传数据,那么就要在A中给B绑定自定义事件(事件的回调在A中)

三、绑定自定义事件

  1.第一种方式

        在父组件中:

            <Demo @someway="test"/> <Demo v-on:someway="test"/>

        案例:

在父组件中绑定一个自定义事件如下: 

<Student v-on:someway="getStudentName" @demo="m1"/>

在父组件的methods当中配置如下:

  1. getStudentName(name,...params) {
  2. console.log("App收到了学生名:", name,params);
  3. this.studentName = name
  4. },

在子组件中绑定事件如下:

<button @click="sendStudentName">把学生名给app</button>

在子组件的methods当中配置如下:

  1. sendStudentName(){
  2. //触发Student组件实例身上的‘someway’事件
  3. this.$emit('someway',this.name,222,111,333)
  4. },

 

  2.第二种方式

        在父组件中:

    <Demo ref="demo"/>

    ......

    mounted(){

        this.$refs.xxx.$on('someway',this.test)

    }

        案例:

在父组件中绑定一个自定义事件如下:

<Student ref="student" @click.native="show"/>

 在父组件中配置生命周期函数如下:

  1. mounted() {
  2. //等待三秒钟后,获取实例对象并添加someway事件
  3. // setTimeout(()=>{
  4. // this.$refs.student.$on('someway',this.getStudentName)
  5. // },3000)
  6. //绑定自定义事件,触发一次之后就不能触发
  7. // this.$refs.student.$once('someway',this.getStudentName)
  8. this.$refs.student.$on('someway',this.getStudentName)
  9. },

在子组件中绑定事件如下:

<button @click="sendStudentName">把学生名给app</button>

在子组件的methods当中配置如下:

  1. sendStudentName(){
  2. //触发Student组件实例身上的‘someway’事件
  3. this.$emit('someway',this.name,222,111,333)
  4. },

 

  3.备注

        若想让自定义事件只能触发一次,可以使用 once 修饰符,或 $once 方法

四、触发自定义事件

         使用:       this.$emit('someway',数据)

 

案例:

在子组件中绑定事件如下:

<button @click="sendStudentName">把学生名给app</button>

在子组件的methods当中配置如下:

  1. sendStudentName(){
  2. //触发Student组件实例身上的‘someway’事件
  3. this.$emit('someway',this.name,222,111,333)
  4. },

五、解绑自定义事件

         使用:       this.$off('someway')

 

案例: 

在子组件中绑定事件如下:

<button @click="unbind">解绑someway事件</button>

在子组件methods当中配置如下:

  1. unbind(){
  2. this.$off('someway')//解绑一个自定义事件
  3. // this.$off(['someway','demo'])//解绑多个自定义事件
  4. // this.$off()//解绑所有自定义事件
  5. },

 

六、绑定原生DOM事件

        组件上也可以绑定原生DOM事件,需要使用native修饰符

案例如下:

<Student ref="student" @click.native="show"/>

 

七、注意

        通过this.$refs.xxx.$on('someway',回调)绑定自定义事件时,回调要么配置在methods中,要么用箭头函数,否则this指向会出问题!!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/411199
推荐阅读
相关标签
  

闽ICP备14008679号