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 相关文章推荐
node.js中的fs.fsyncSync方法使用说明
Dec 15 Javascript
jquery实现select选择框内容左右移动代码分享
Nov 21 Javascript
JavaScript如何实现组合列表框中元素移动效果
Mar 01 Javascript
JavaScript中instanceof运算符的使用示例
Jun 08 Javascript
原生js实现弹出层登录拖拽功能
Dec 05 Javascript
基于Javascript倒计时效果
Dec 22 Javascript
Angularjs实现搜索关键字高亮显示效果
Jan 17 Javascript
Vue.js如何优雅的进行form validation
Apr 07 Javascript
vue.js响应式原理解析与实现
Jun 22 Javascript
基于vue.js组件实现分页效果
Dec 29 Javascript
vue学习笔记之过滤器的基本使用方法实例分析
Feb 01 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
Aug 18 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
WordPress中缩略图的使用以及相关技巧
2015/11/24 PHP
PHP is_array() 检测变量是否是数组的实现方法
2016/06/13 PHP
HTML 自动伸缩的表格Table js实现
2009/04/01 Javascript
用jQuery模拟页面加载进度条的实现代码
2011/12/19 Javascript
浅谈Javascript事件模拟
2012/06/27 Javascript
Microsfot .NET Framework4.0框架 安装失败的解决方法
2013/08/14 Javascript
javascript动态创建及删除元素的方法
2014/12/22 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
js 判断一个数字是不是2的n次方幂的实例
2017/11/26 Javascript
nodejs连接mysql数据库及基本知识点详解
2018/03/20 NodeJs
iview在vue-cli3如何按需加载的方法
2018/10/31 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
更优雅的微信小程序骨架屏实现详解
2019/08/07 Javascript
浅析vue中的provide / inject 有什么用处
2019/11/10 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
Python批量修改文件后缀的方法
2014/01/26 Python
详解Python实现按任意键继续/退出的功能
2016/08/19 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
2017/11/01 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
使用python对多个txt文件中的数据进行筛选的方法
2019/07/10 Python
Pandas中DataFrame的分组/分割/合并的实现
2019/07/16 Python
python字符串替换re.sub()方法解析
2019/09/18 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
python 循环数据赋值实例
2019/12/02 Python
pytorch masked_fill报错的解决
2020/02/18 Python
Agoda台湾官网:国内外订房2折起
2018/03/20 全球购物
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
如何选择使用结构还是类
2014/05/30 面试题
机械制造专业个人的自我评价
2013/12/28 职场文书
幼儿园教师培训方案
2014/02/04 职场文书
旷课检讨书1000字
2014/02/14 职场文书
高中军训感言200字
2014/02/23 职场文书
汇源肾宝广告词
2014/03/20 职场文书
催款函范文
2015/06/24 职场文书
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP
一次SQL查询优化原理分析(900W+数据从17s到300ms)
2022/06/10 SQL Server