Vue2:给组件绑定自定义事件

一、场景描述

我们在页面开发中,难免要使用事件。

在之前的学习中,我们学过@click、@keyup、@change等事件,这些是Vue自带的事件。

它的使用前提是,只能用在原生的HTML元素上。

比如:

html 复制代码
h1绑定一个click事件。
<h1 @click="test">你好</h1>
iput绑定一个keyup事件.
<input type="text" @keyup.enter="add"/>

这一篇说的自定义事件,可以绑定到我们自己的Vue组件上。

实现子组件给父组件传递数据的功能。

比如:

html 复制代码
<School :getSchoolName="getSchoolName"/>

二、绑定自定义事件

方式1

使用@或v-on方式绑定自定义事件

App父组件中:

模板代码:

html 复制代码
 <Student @test="getStudentName"/>

methods函数:

js 复制代码
getStudentName(name,...params){
    console.log('App收到了学生名:',name,params)
}

Student子组件中:

模板代码:

html 复制代码
<button @click="sendStudentlName">把学生名给App</button>

methods函数:

js 复制代码
//触发Student组件实例身上的test事件	传递多个参数
this.$emit('test',this.name,666,888,900)

方式2

使用ref方式绑定自定义事件
App父组件中:

模板代码:

html 复制代码
<Student ref="student"/>

mounted属性:

js 复制代码
        mounted() {
            //设置三秒后再绑定事件
            // setTimeout(() => {
            //     this.$refs.student.$on('test',this.getStudentName) //绑定自定义事件    第一个参数是事件名称,第二个参数是函数名称
            // },3000);
            // this.$refs.student.$on('test',this.getStudentName) //绑定自定义事件    第一个参数是事件名称,第二个参数是函数名称
            this.$refs.student.$once('test',this.getStudentName) //绑定自定义事件(一次性)
        }

Student子组件中:

方式1相同

三、总结

原则:给那个组件的vc实例绑定事件,就由那个组件的vc实例来触发事件

相对来讲,第二种方法更灵活,第一种方法更简便,各有优势,视具体情况选择使用。

相关推荐
布兰妮甜5 分钟前
单例模式在前端(JavaScript)中的实现与应用
前端·javascript·单例模式
Mintopia6 分钟前
Three.js 加载模型文件:从二进制到像素的奇幻漂流
前端·javascript·three.js
StrongerIrene15 分钟前
rs build 的process.env的值undefined解决方案
开发语言·javascript·ecmascript
前端小巷子25 分钟前
跨域问题解决方案:JSONP
前端·javascript·面试
eric*168832 分钟前
尚硅谷张天禹老师课程配套笔记
前端·vue.js·笔记·vue·尚硅谷·张天禹·尚硅谷张天禹
程序员爱钓鱼1 小时前
Go语言中的反射机制 — 元编程技巧与注意事项
前端·后端·go
GIS之路1 小时前
GeoTools 结合 OpenLayers 实现属性查询(二)
前端·信息可视化
just小千1 小时前
重学React(二):添加交互
javascript·react.js·交互
烛阴1 小时前
一文搞懂 Python 闭包:让你的代码瞬间“高级”起来!
前端·python
AA-代码批发V哥1 小时前
HTML之表单结构全解析
前端·html