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 相关文章推荐
javascript实现的网页局布刷新效果
Dec 01 Javascript
javascript qq右下角滑出窗口 sheyMsg
Mar 21 Javascript
jquery实现简单的自动播放幻灯片效果
Jun 13 Javascript
JS日期加减,日期运算代码
Nov 05 Javascript
JavaScript基于原型链的继承
Jun 22 Javascript
AngularJs  E2E Testing 详解
Sep 02 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
Oct 11 Javascript
用js实现博客打赏功能
Oct 24 Javascript
Bootstrap 模态对话框只加载一次 remote 数据的完美解决办法
Jul 09 Javascript
利用jQuery实现简单的拖曳效果实例代码
Oct 20 jQuery
小程序实现左滑删除功能
Oct 30 Javascript
微信小程序实现左滑修改、删除功能
Oct 19 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
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
Yii框架连接mongodb数据库的代码
2016/07/27 PHP
JavaScript 未结束的字符串常量常见解决方法
2010/01/24 Javascript
基于jquery的图片懒加载js
2010/06/30 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
js随机生成字母数字组合的字符串 随机动画数字
2015/09/02 Javascript
js生成随机数的方法实例
2015/10/16 Javascript
基于jQuery实现的仿百度首页滑动选项卡效果代码
2015/11/16 Javascript
总结JavaScript中布尔操作符||与&amp;&amp;的使用技巧
2015/11/17 Javascript
Angular-Touch库用法示例
2016/12/22 Javascript
vue指令以及dom操作详解
2017/03/04 Javascript
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
使用live-server快速搭建本地服务器+自动刷新的方法
2018/03/09 Javascript
Angular如何在应用初始化时运行代码详解
2018/06/11 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
[01:15]《辉夜杯》北京网鱼队巡礼
2015/10/26 DOTA
Python中__name__的使用实例
2015/04/14 Python
python实现对一个完整url进行分割的方法
2015/04/29 Python
Python中set与frozenset方法和区别详解
2016/05/23 Python
python利用正则表达式提取字符串
2016/12/08 Python
python2.7无法使用pip的解决方法(安装easy_install)
2018/04/03 Python
Python3 中作为一等对象的函数解析
2019/12/11 Python
pytorch 修改预训练model实例
2020/01/18 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
python判断正负数方式
2020/06/03 Python
CSS3中的clip-path使用攻略
2015/08/03 HTML / CSS
css3 border旋转时的动画应用
2016/01/22 HTML / CSS
出生公证委托书
2014/04/03 职场文书
青年志愿者活动方案
2014/08/17 职场文书
县委常委班子专题民主生活会查摆问题及整改措施
2014/09/27 职场文书
高中生社会实践心得体会
2016/01/14 职场文书
小学语文课《掌声》教学反思
2016/03/03 职场文书
sql查询结果列拼接成逗号分隔的字符串方法
2021/05/25 SQL Server
【DOTA2】半决赛强强对话~ PSG LGD vs EHOME - DPC 2022 CN REGIONAL FINALS WINTER
2022/04/02 DOTA
Redis基本数据类型List常用操作命令
2022/06/01 Redis
python 判断字符串当中是否包含字符(str.contain)
2022/06/01 Python