vue2中的组件自定义事件

        1.绑定事件:        <组件  :自定义名称="方法"  />

        2.调用                this.$emit('方法',参数)

        3.关闭               this.$off('方法')

       案例:

     1.提前准备好组件

      Student组件

<template>
  <div class="student">
    <h1>学校名称:{{ stname }}</h1>
    <h1>学校地址:{{ staddress }}</h1>
    <button @click="getB()">提交</button> 
  </div>
</template>

<script>
export default {
  name: "StudentB",
  data() {
    return {
      stname: "千锋",
      staddress: "陕西",
    };
  },
  props:['g'],
  methods: {
    getB() {
      this.g(this.stname,this.staddress)
    }, 
  },
};
</script>

<style scoped>
.student {
  background-color: aqua;
  padding: 5px;
  margin-top: 20px;
}
</style>

      App组件

<template>
  <div id="app">
    <h1>{{msg}}</h1> 
    <h1>学校姓名:{{studentname}}</h1>
    <StudentB :g="getStudentB"/> 
  </div>
</template>

<script>

import StudentB from './components/Student' 

export default {
  name: 'App',
  components: {
    StudentB
  },
  data(){
      return{
         msg:"你好啊" ,
         studentname:""
      } 
   },
  methods:{ 
        getStudentB(v,...params){ 
          console.log(params)
          this.studentname=v
          alert(v)
        }, 
    }, 
}
</script>

<style>
#app {
 background-color: red;
 text-align: center;
}
</style>

        2.运行项目

         点击提交弹出学校名称

3.将getStudentB方法改成自定义事件

        3.1在app组件中定义自定义事件

  <StudentB @g="getStudentB"/> 

        3.2在student组件中调用

this.$emit('g',this.stname,this.staddress)

        4.测试功能还可以实现

              以上就是自定义事件的基本使用

        解绑自定义事件:

 <button @click="unBind()">解绑</button> 
    unBind(){ 
      this.$off('g')   //删除一个自定义事件
      // this.$off(['g'])  //删除某些自定义事件
      // this.$off()   //删除所有自定义事件 
       }

           接触绑定后我们的功能就失效了

 

        使用ref绑定自定义事件

<StudentB ref="stu"/> 
    mounted(){
      this.$refs.stu.$on('g',this.getStudentB)
    }
    mounted(){
      this.$refs.stu.$on('g',(v)=>{
        this.studentname=v
         alert(v)
      })

           如果用箭头函数写的方法this会自动找外层的,因为箭头函数没有this

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值