首页 > 其他分享 >vue中通过$emit实现子向父通信

vue中通过$emit实现子向父通信

时间:2023-04-16 16:11:47浏览次数:30  
标签:触发 vue 自定义 Add add 事件 子向父 emit

本篇讨论vue中使用$emit实现子向父通信,

第一步:我们在父组件中注册子组件,然后再给子组件标签添加一个自定义事件监听,这样在子组件实例上就绑定了一个自定义的事件add。

  后面如果触发add事件,那么就会执行addBtnClick函数。

 1 <template>
 2   <div>
 3     <h1>当前数为:{{ counter }}</h1>
 4     <!-- 自定义add -->
 5     <Add @add="addBtnClick"></Add>
 7   </div>
 8 </template>
 9 
10 <script>
11 import Add from './components/Add.vue';13   export default {
14     name:'App',
15     components: {
16       Add,18     },
19     data () {
20       return {
21         counter:0
22       }
23     },
24     methods: {
25       addBtnClick(count){
26         this.counter += count;
27       },31 
32     }
33   }
34 </script>
35 
36 <style scoped>
37 
38 </style>

第二步:怎么去触发add事件呢,点击事件鼠标点击触发,键盘事件,按键盘触发,而自定义事件这里就用到了Vue提供的$emit去触发。

  这里给谁绑定的事件就找谁触发,我们是给Add组件绑定的事件,那么就应该让Add组件去触发自定义事件add,  

  那怎么去执行$emit呢,这时我们就可以在Add组件中写一个按钮,然后添加点击事件,然后点击事件触发回调函数btnClick然后执行回调函数的代码。

  当然我们也可以用watch监听器,去监听某一个数据,当数据发生改变时,触发自定义事件add也是可以的。

  这里我就用点击事件简单点,点击按钮触发回调函数。然后再用$emit去触发自定义事件,这里$emit是可以传入多个参数的

 1 <template>
 2   <div>
 3     <button @click="btnClick(1)">+1</button>
 4   </div>
 5 </template>
 6 
 7 <script>
 8 export default {
 9   name: 'Add',
10   methods: {
11     btnClick(i){
12       // 触发自定义事件
13       this.$emit('add',i);//第一个参数是自定义事件的名称,第二个是传递出去的参数
14     }
15   }
16 }
17 </script>
18 
19 <style scoped></style>

第三步:当add自定事件被触发,那么addBtnClick回调函数就会被执行,当执行函数时子组件通过$emit传递过来的,参数就可以被addBtnClick接收到

 

 

以上仅供参考学习,如果错误,请大佬指出,万分感谢。一起学习一起进步。

标签:触发,vue,自定义,Add,add,事件,子向父,emit
From: https://www.cnblogs.com/dingjishun/p/17323427.html

相关文章

  • vue做多选,传递数组类型到后端
    1.需求:多选框选择多个类型,把选中的数据传递到后端当初在做多选框,直接用了element-ui里面的el-check-box属性,在官网里面说,是使用v-modol绑定数值来传递,好嘛,,,传的一直是true!!不是我想要的数据,也是很久没使用vue框架了,做的时候很是怀疑自己,使用value来绑值?使用v-model?使用v-bind???一直试......
  • Vue2.0 学习 第三组 条件语句
    本笔记主要参考菜鸟教程和官方文档编写。1.v-if在div或者之类的dom中使用v-if可以控制是否插入该dom,控制由v-if的true和false决定。如:<divid="app"><divv-if="test"></div></div><script>newVue({el:"#app",data:{test:true}})</script>2.v-show......
  • vue2源码-五、将模板编译解析成AST语法树2
    生成render函数前言上篇,生成ast语法树,而这篇使用ast语法树生成render函数。exportfunctioncompileToFunction(template){//1,将模板编译称为AST语法树letast=parserHTML(template);//2,使用AST生成render函数letcode=codegen(ast);}生成r......
  • Vue3中(vite.config.js)配置打包的时候去除console.log
    参考:https://www.cnblogs.com/lovewhatIlove/p/16476165.html安装tersernpmadd-Dterservite中配置import{defineConfig}from"vite";importvuefrom"@vitejs/plugin-vue";importvueJsxfrom"@vitejs/plugin-vue-jsx";importvisua......
  • 新手适合用什么Vue组件库?TinyVue组件库好用吗?
    对于刚接触前端领域的同学,绕不开选择组件库的问题,常见的Vue组件库如下:Vuetify组件库。一个纯手工精心打造的Material样式的组件库。文档全,但是纯英文的官网还是会让一些同学望而却步。2016年发布。Ant-design-vue组件库。AntDesign的Vue实现,组件的风格与AntDesign保......
  • 3.Vue3.0 有什么更新
    1.监测机制的改变3.0将带来基于代理Proxy的observer实现,提供全语言覆盖的反应性跟踪。消除了Vue2当中基于Object.defineProperty的实现所存在的很多限制。2.只能监测属性,不能监测对象检测属性的添加和删除;检测数组索引和长度的变更;支持Map、Set、WeakMap和Weak......
  • Vue3组合API自动引入插件
    插件名:unplugin-auto-importurl:https://github.com/antfu/unplugin-auto-import安装1、下载插件npmiunplugin-auto-import-D2、配置vite.config.tsimportvuefrom'@vitejs/plugin-vue'import{defineConfig}from'vite'//引入插件,因为我使用的vite+ts,所以这里引......
  • vue自定义密码输入框解决浏览器自动填充密码的问题
    问题描述浏览器对于type="password"的输入框会自动填充密码,但有时出于安全或者其他原因,我们不希望浏览器记住并自动填充密码。通过网上查到的一些解决方案,可以总结出以下几种解决方案(主要用edge浏览器进行测试):通过autocomplete="off"/autocomplete="new-password"来关闭浏览......
  • vue-element-admin 动态菜单改造
    vue-element-admin动态菜单改造vue-element-admin是一款优秀后台前端解决方案,它基于vue和element-ui实现。开源后台管理系统解决方案项目Boot-admin的前端模块就是基于vue-element-admin开发而来。作为一款纯前端的后台界面解决方案,vue-element-admin是通过遍历路由进行渲......
  • vue 自定义季度选择器
    1、效果时间格式:2023-Q12、封装quarter-picker.vue<template><divclass="quarter-picker"><selectclass="year-select"v-model="year"@change="updateQuarter"><optionvalue=&......