首页 > 其他分享 >【Vue2.0学习】—组件的自定义事件(五十八)

【Vue2.0学习】—组件的自定义事件(五十八)

时间:2022-10-29 11:31:56浏览次数:51  
标签:name 自定义 stu 事件 组件 解绑 Vue2.0 五十八


【Vue2.0学习】—组件的自定义事件(五十八)

组件的自定义事件

  • 一种组件间通信的方式:适用于子组件—>父组件
  • 使用场景:A是父组件,B是子组件,B想给A传数据,那么就要A给B绑定自定义事件,事件的回调在A中
    绑定自定义事件:
  • 第一种方式:在父组件中​​<Demo @stu="test"/>或<Demo v-on:stu="test"/>​第二种方式:在父组件中:
<Demo ref="demo"/>
……
mounted(){
this.$refs.XXX.$on('stu',this.test)
}
  • 若想让自定义事件只触发一次,可以使用once修饰符或$once方法
    触发自定义事件:​​this.$emit('stu',数据)​​ 解绑自定义事件:​​this.$off('stu')​
  • 组件上也可以绑定原生​​DOM​​事件,需要使用​​native​​修饰符
    注意:通过​​this.$refs.XXX.$on('native',回调)​​ 绑定自定义事件时,回调要么配置在​​methods​​中,要么用箭头函数否则​​this​​指向会出问题
<template>
<div class="container">
<h1>{{msg}}</h1>
<School :getSchoolName="getSchoolName" />
<!-- 意思是说:给Student组件的实例对象vc身上绑定了一个事件,事件名字叫stu,有人触发了这个事件demo函数就会调用-->
<!-- <Student v-on:stu="demo"/> -->
<!-- 通过父组件给子组件绑定一个自定义事件实现:子传父传递数据(使用@或者v-on) -->
<!-- <Student v-on:stu="getName"/> -->
<Student @stu="getName"/>
<!-- 通过父组件给子组件绑定一个自定义事件实现:子给父传递数据使用ref -->
<!-- <Student ref="student"/> -->
<!-- <Student @:stu="getName" @demo="m1" /> -->

</div>

</template>

<script>
import Student from './components/Student.vue'
import School from './components/School.vue'
export default {
name: 'App',

data() {
return {
msg: '你好鸭'
}
},
components: {
School,
Student
},
methods: {
getSchoolName(name) {
console.log('APP收到名字了', name)
},
getName(name) {
console.log('APP收到学生名字了', name)

}
// m1() {
// console.log('demo事件触发了')
// }
},
mounted() {

// this.$refs.student.$on('stu',this.getName)
//触发一次
// this.$refs.student.$once('stu',this.getName)

}
}
</script>

<style scoped>
.container {
background-color: pink;
padding: 5px;
}
</style>
<template>
<div class="box">
<h2>学生姓名:{{name}}</h2>
<h2>学生年龄:{{age}}</h2>
<button @click="sendStudentName">把学生名给APP</button>
<button @click="unbind">解绑学生事件</button>

</div>
</template>

<script>
export default {
name:'Student',

data(){
return{
name:'王同学',
age:20
}
},
methods:{
sendStudentName(){
//触发Student身上的stu 事件
this.$emit('stu',this.name)
// this.$emit('demo')
},

unbind(){
//用于解绑一个事件
this.$off('stu');//解绑一个事件
//this.$off(['stu','demo'])//解绑多个事件
// this.$off()//解绑所有的事件
}
}


}
</script>

<style scoped>
.box{
background-color: skyblue;
}

</style>


标签:name,自定义,stu,事件,组件,解绑,Vue2.0,五十八
From: https://blog.51cto.com/u_15703678/5805856

相关文章

  • 【Vue2.0学习】—mixin混入(五十五)
    【Vue2.0学习】—mixin混入(五十五)//该文件是整个项目的入口文件//引入VueimportVuefrom'vue'//引入APP组件,它是所有组件的父组件importAppfrom'./App.vue'//全局引入i......
  • 【Vue2.0学习】—插件(五十六)
    【Vue2.0学习】—插件(五十六)scoped样式作用:让样式在局部生效,防止冲突写法:​​<stylescoped></style>​​......
  • 【Vue2.0学习】—浏览器本地存储(五十七)
    【Vue2.0学习】—浏览器本地存储(五十七)WebStorage​​webstorage​​​是本地存储,存储在客户端,包括​​localStorage和sessionStorage​​。1、存储内容大小一般支持​​5MB......
  • 分页组件自定义props
    <template><el-paginationbackground@size-change="handleSizeChange"@current-change="handleCurrentChange":page-sizes="pageSizes":page......
  • Mybatis 之 自定义插件 yyyy-MM
    请结合上一篇>>> MP插件原理  <<<  以及  >>>  Mybatis插件原理 <<< 进行查看查看 使用场景:在写一些与月份为单位的场景中,如:薪资系统(月薪制)1、Ja......
  • Mybatis 之 自定义别名处理插件
    请结合上一篇>>> MP插件原理  <<<  以及  >>>  Mybatis插件原理 <<< 进行查看查看 MP开发中,遇到的问题,动态的Wrapper产生的SQL中,主要出现在组合......
  • 自定义对象属性操作
    最基本点运算letperson={name:'henry',age:18,run:function(){console.log('running');}}person.run();属性的读取:letperson={name:'......
  • 企业级自定义表单引擎解决方案(十五)--前端开源说明
    一直做后端开发,前端还真不是强项,半桶水的样子,好在现在前端框架和组件层出不穷,基本上勉强可以上路。自定义表单对前端要求非常高,技术上的难度不亚于后端,而且要考虑扩展性......
  • vs.net 效率提升-自定义快捷键
    工欲善其事必先利其器,记录一下自己开发时常用的几个自定义的快捷键。做了这么多年了用着还是比较顺手的分享下~~~~设置时有时设置不成功,非得一项一......
  • Winform 无边框 绘制自定义边框
    privatevoidFrmLogin_Paint(objectsender,PaintEventArgse){///自定义绘制边框颜色//e.Graphics.DrawRectangle(Pens.DarkOliveGr......