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比较文档位置
Apr 08 Javascript
JavaScript Accessor实现说明
Dec 06 Javascript
jquery关于图形报表的运用实现代码
Jan 06 Javascript
js获取时间并实现字符串和时间戳之间的转换
Jan 05 Javascript
JQuery异步获取返回值中文乱码的解决方法
Jan 29 Javascript
JavaScript实现经典排序算法之冒泡排序
Dec 28 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
Jan 06 Javascript
Vuex实现计数器以及列表展示效果
Mar 10 Javascript
解决angular2 获取到的数据无法实时更新的问题
Aug 31 Javascript
vue实现搜索功能
May 28 Javascript
详解element-ui设置下拉选择切换必填和非必填
Jun 17 Javascript
JavaScript复制变量三种方法实例详解
Jan 09 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实现Linux服务器木马排查及加固功能
2014/12/29 PHP
javascript 用函数语句和表达式定义函数的区别详解
2014/01/06 Javascript
js控制iframe的高度/宽度让其自适应内容
2014/04/09 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
2016/04/13 Javascript
selenium 与 chrome 进行qq登录并发邮件操作实例详解
2017/04/06 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
详解使用create-react-app添加css modules、sasss和antd
2018/07/31 Javascript
了解Javascript中函数作为对象的魅力
2019/06/19 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
Layui给switch添加响应事件的例子
2019/09/03 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
vue 实现一个简单的全局调用弹窗案例
2020/09/10 Javascript
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
jQuery实现动态向上滚动
2020/12/21 jQuery
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
Python读写unicode文件的方法
2015/07/10 Python
PyQt5实现简易计算器
2020/05/30 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
2019/07/11 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
Python利用全连接神经网络求解MNIST问题详解
2020/01/14 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
2021/02/20 Python
澳大利亚手表品牌:Time IV Change
2018/10/06 全球购物
教师师德演讲稿
2014/05/06 职场文书
党建目标管理责任书
2014/07/25 职场文书
2014群众路线学习笔记
2014/11/06 职场文书
医院营销工作计划
2015/01/16 职场文书
2015年青年志愿者工作总结
2015/05/20 职场文书
民事诉讼代理词
2015/05/25 职场文书
反腐倡廉心得体会2016
2016/01/13 职场文书
SqlServer: 如何更改表的文件组?(进而改变存储位置)
2021/04/05 SQL Server
Java基础-封装和继承
2021/07/02 Java/Android