vue父组件点击触发子组件事件的实例讲解


Posted in Javascript onFebruary 08, 2018

最近在学习Vue父子组件通信的问题,刚好遇到一个父子之间事件事件派发与接收,在这里记录一下,在这里我使用的是ref

给子组件注册引用信息。官网是这样解释的

ref 被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs 对象上。如果在普通的 DOM 元素上使用,引用指向的就是 DOM 元素; 如果用在子组件上,引用就指向组件实例:

父组件app.vue

<template>
  <div id="app">
  <!--父组件-->
  <input v-model="msg">
  <button v-on:click="notify">广播事件</button>
  <!--子组件-->
  <popup ref="child" ></popup>
  </div>
 </template>
 <script>
  import popup from '@/components/popup'
  export default {
  name: 'app',
  data: function () {
   return {
   msg: ''
   }
  },
  components: {
   popup
  },
  methods: {
   notify: function () {
   if (this.msg.trim()) {
    this.$refs.child.parentMsg(this.msg)
   }
   }
  }
  }
 </script>
 <style>
  #app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
  }
 </style>

子组件popup.vue

<template>
   <div>
   <ul>
    <li v-for="item in messages">父组件输入了:{{item}}</li>
   </ul>
   </div>
  </template>
  <style>
   body {
    background-color: #ffffff;
   }
  </style>
  <script>
  export default{
   name: 'popup',
   data: function () {
   return {
    messages: []
   }
   },
   methods: {
   parentMsg: function (msg) {
    this.messages.push(msg)
   }
   }
  }
  </script>

我把这个实例分为几个步骤解读:

1、父组件的button元素绑定click事件,该事件指向notify方法

2、给子组件注册一个ref="child"

3、父组件的notify的方法在处理时,使用了$refs.child把事件传递给子组件的parentMsg方法,同时携带着父组件中的参数msg

4、子组件接收到父组件的事件后,调用了parentMsg方法,把接收到的msg放到message数组中

运行结果如下:

vue父组件点击触发子组件事件的实例讲解

vue父组件点击触发子组件事件的实例讲解

以上这篇vue父组件点击触发子组件事件的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Array.slice()与Array.splice()的返回值类型
Oct 09 Javascript
一句话JavaScript表单验证代码
Aug 02 Javascript
js防止表单重复提交的两种方法
Sep 30 Javascript
js中document.write使用过程中的一点疑问解答
Mar 20 Javascript
js事件监听器用法实例详解
Jun 01 Javascript
jQuery实现模拟marquee标签效果
Jul 14 Javascript
轻松学习Javascript闭包函数
Dec 15 Javascript
Javascript类型转换的规则实例解析
Feb 23 Javascript
jquery自定义右键菜单、全选、不连续选择
Mar 01 Javascript
原生js实现自由拖拽弹窗代码demo
Jun 29 Javascript
利用Node.js+Koa框架实现前后端交互的方法
Feb 27 Javascript
vue实现页面切换滑动效果
Jun 29 Javascript
vue中实现在外部调用methods的方法(推荐)
Feb 08 #Javascript
10 种最常见的 Javascript 错误(频率最高)
Feb 08 #Javascript
Vue组件通信的四种方式汇总
Feb 08 #Javascript
Vue Socket.io源码解读
Feb 07 #Javascript
原生JavaScript实现的简单放大镜效果示例
Feb 07 #Javascript
Express下采用bcryptjs进行密码加密的方法
Feb 07 #Javascript
Vue Element使用icon图标教程详解(第三方)
Feb 07 #Javascript
You might like
多数据表共用一个页的新闻发布
2006/10/09 PHP
如何做到多笔资料的同步
2006/10/09 PHP
不用数据库的多用户文件自由上传投票系统(3)
2006/10/09 PHP
php adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
js 加密压缩出现bug解决方案
2014/11/25 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
浅谈Javascript数组索引
2015/07/29 Javascript
JS+CSS实现简单滑动门(滑动菜单)效果
2015/09/19 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
Angular实现的日程表功能【可添加及隐藏显示内容】
2017/12/27 Javascript
微信小程序methods中定义的方法互相调用的实例代码
2018/08/07 Javascript
微信小程序实现富文本图片宽度自适应的方法
2019/01/20 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
2020/02/03 Javascript
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
[01:03:51]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第三场
2018/04/09 DOTA
python类中super()和__init__()的区别
2016/10/18 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
numpy数组拼接简单示例
2017/12/15 Python
详解Python 实现元胞自动机中的生命游戏(Game of life)
2018/01/27 Python
用Python将mysql数据导出成json的方法
2018/08/21 Python
django利用request id便于定位及给日志加上request_id
2018/08/26 Python
Pycharm无法使用已经安装Selenium的解决方法
2018/10/13 Python
python3 使用traceback定位异常实例
2020/03/09 Python
python实现npy格式文件转换为txt文件操作
2020/07/01 Python
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
小学国庆节活动方案
2014/02/11 职场文书
大学秋游活动方案
2014/02/11 职场文书
岗位职责说明书模板
2014/07/30 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
伊索寓言读书笔记
2015/06/30 职场文书
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python
剧场版《转生恶役只好拔除破灭旗标》公开最新视觉图 2023年上映
2022/04/02 日漫