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 相关文章推荐
jQuery 表单验证扩展(三)
Oct 20 Javascript
intro.js 页面引导简单用法 分享
Aug 06 Javascript
js 判断控件获得焦点的示例代码
Mar 04 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
May 18 Javascript
AngularJS表格详解及示例代码
Aug 17 Javascript
使用contextMenu插件实现Bootstrap table弹出右键菜单
Feb 20 Javascript
Express URL跳转(重定向)的实现方法
Apr 07 Javascript
JavaScript多态与封装实例分析
Jul 27 Javascript
js中的数组对象排序分析
Dec 11 Javascript
详解JavaScript 的变量
Mar 08 Javascript
layui 上传文件_批量导入数据UI的方法
Sep 23 Javascript
使用vue-cli4.0快速搭建一个项目的方法步骤
Dec 04 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 和 XML: 使用expat函数(三)
2006/10/09 PHP
PHP新手入门学习方法
2011/05/08 PHP
Yii2隐藏frontend/web和backend/web的方法
2015/12/12 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
thinkphp3.2点击刷新生成验证码
2016/02/16 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
Javascript 继承机制的实现
2009/08/12 Javascript
ie6下png图片背景不透明的解决办法使用js实现
2013/01/11 Javascript
Js日期选择自动填充到输入框(界面漂亮兼容火狐)
2013/08/02 Javascript
浅谈javascript中的instanceof和typeof
2015/02/27 Javascript
jquery实现漂亮的二级下拉菜单代码
2015/08/26 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
JS实现图片上传预览功能
2016/11/21 Javascript
Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法
2017/02/17 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
微信小程序视图容器(swiper)组件创建轮播图
2020/06/19 Javascript
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
2019/03/02 NodeJs
Angular+ionic实现折叠展开效果的示例代码
2020/07/29 Javascript
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
[01:07:41]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python实现类似jQuery使用中的链式调用的示例
2016/06/16 Python
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
python 中的命名空间,你真的了解吗?
2020/08/19 Python
HTML5本地数据库基础操作详解
2016/04/26 HTML / CSS
美体小铺印度官网:The Body Shop印度
2019/10/17 全球购物
为什么会有内存对齐
2016/10/10 面试题
保险公司晨会主持词
2014/03/22 职场文书
解除劳动合同协议书(样本)
2014/10/02 职场文书
教师思想作风整顿个人剖析材料
2014/10/10 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
2015年房产销售工作总结范文
2015/05/22 职场文书
2015年学校远程教育工作总结
2015/07/20 职场文书