Vue中设置组件的自定义事件和解绑组件的自定义事件

2023-12-31 01:28

本文主要是介绍Vue中设置组件的自定义事件和解绑组件的自定义事件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

组件的自定义事件

  • 设置School组件实现props,子给父传数据。School组件用于和Student组件做对比。

  • App向School组件传getSchoolName,School组件通过props接收存入School的VueConponent。随后通过调用getSchoolName实现子给父传递数据

  • 想让组件标签识别原生Vue提供的事件。需要加入native

    <School @click.native='show'/>
  • <template><div class="school"><h2>学校的名字:{{ name  }}</h2><button @click="sendSchoolName">测试sendSchoolName方法</button></div>
    </template>
    ​
    <script>
    export default {props: ['getSchoolName'],data(){return {name: '小猴子的玩具商'}},methods:{sendSchoolName(){this.getSchoolName(this.name)}},
    }
    </script>
    <style scoped>.school {background-color: pink;padding: 5px;margin-top: 30px;}
    </style>>
    ​
  • Student组件实现功能也是子给父传递数据。但用组件的自定义事件来实现

  • <template><div class="blue"><h2>学生的名字:{{ name }}</h2><h2>学生的名字:{{ address }}</h2><button @click="sendStudentName">测试sendStudentName方法</button></div>
    </template>
    <script>
    export default {name:'Student',data(){return {name:'boy',address:'老地方'}},methods: {sendStudentName(){// 事件在谁身上则在哪里触发,故触发Student组件实例身上的boy事件,emit有发射的意思。传了一个参数name给Appthis.$emit('boy',this.name)}},
    }
    </script>
    <style scoped>.blue{background-color: blue;padding: 5px;}
    </style>
     
  • Student和School组件实现的区别在于

    1、App中的getSchoolName方法是直接给School组件,School组件需要props接收一下,自己调用一下。

    2、App中的getStudentName方法不直接传给Student组件,而是利用触发事件( this.$emit() ) 的方式,调用demo

  • <template><div class="title"><router-view/><h2>{{ mas }}</h2><!-- 给组件的实列对象VueComponent上绑定事件(boy事件)。如果触发boy事件demo就被调用 --><!-- 第一种写法,<Student v-on:boy = "demo"/> --><!-- 第二种写法,用ref获取Student组件的VueComponent--><Student ref="student"/><!-- 通过父组件给子组件传递函数类型的props实现:子给父传递数据 --><School :getSchoolName ='getSchoolName'/></div>
    </template>
    ​
    <script>
    import Student from '../src/components/Student.vue'
    import School from '../src/components/School.vue'
    export default {name: 'App',components:{Student,School},data(){return {mas: '你好啊'}},methods: {//接收School组件传过来的namegetSchoolName(name){console.log('发送成功了',name);},//接收Student组件传过来的namedemo(name){console.log('demo被调用',name)}}
    },// 第二种写法的灵活性更高,当要求是:延迟3秒才触发事件。第二种方法可以实现。如下mounted(){setTimeout(()=>{// this.$refs.student为获取到Student组件的VueComponent,$on为当什么的时候。括号内的第一个元素为事件名,第二个元素为触发事件回调的方法this.$refs.student.$on('boy', this.demo)},3000)}
    </script>
    <style scoped>.title {background-color: gray;padding: 5px;}
     

    解绑组件的自定义事件

    • this.$off()//解绑一个自定义事件

    • this.$off([ ])//解绑多个自定义事件

    • this.$off()//解绑所有的自定义事件

    • this.$destroy()销毁当前组件的VueConponent,而Vue提供的事件还能响应

    • <template><div class="blue"><h2>学生的名字:{{ name }}</h2><h2>学生的名字:{{ address }}</h2><button @click="sendStudentName">测试sendStudentName方法</button><button @click="unbind">解绑自定义事件</button><button @click="death">销毁当前组件的实例化对象</button>
      ​</div>
      </template>
      ​
      <script>
      export default {name:'Student',data(){return {name:'boy',address:'老地方'}},methods: {sendStudentName(){// 事件在谁身上则在哪里触发,故触发Student组件实例身上的boy事件,emit有发射的意思。传了一个参数namethis.$emit('boy',this.name)this.$emit('girl')},unbind(){this.$off('boy')//解绑一个自定义事件this.$off(['boy','girl'])//解绑多个自定义事件this.$off()//解绑所有的自定义事件},death(){//销毁当前的Student组件的实例,销毁后所有的Student实列的自定义事件全都不奏效。this.$destroy()}},
      }
      </script>
      <style scoped>.blue{background-color: blue;padding: 5px;}
      </style>

这篇关于Vue中设置组件的自定义事件和解绑组件的自定义事件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/554574

相关文章

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

mtu设置多少网速最快? 路由器MTU设置最佳网速的技巧

《mtu设置多少网速最快?路由器MTU设置最佳网速的技巧》mtu设置多少网速最快?想要通过设置路由器mtu获得最佳网速,该怎么设置呢?下面我们就来看看路由器MTU设置最佳网速的技巧... 答:1500 MTU值指的是在网络传输中数据包的最大值,合理的设置MTU 值可以让网络更快!mtu设置可以优化不同的网

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

如何自定义一个log适配器starter

《如何自定义一个log适配器starter》:本文主要介绍如何自定义一个log适配器starter的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求Starter 项目目录结构pom.XML 配置LogInitializer实现MDCInterceptor

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变