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

 更新时间:2018年02月08日 08:57:11   作者:小k前端杂谈  
下面小编就为大家分享一篇vue父组件点击触发子组件事件的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

最近在学习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首评加载速度及白屏时间优化详解

    这篇文章主要介绍了vue项目优化首评加载速度,以及白屏时间过久的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-09-09
  • 基于Vue生产环境部署详解

    基于Vue生产环境部署详解

    下面小编就为大家带来一篇基于Vue生产环境部署详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 使用Vue3创建多布局系统的三种方法

    使用Vue3创建多布局系统的三种方法

    布局是中大型网站或应用的基础,假设你正在创建一个网页应用,它包括主页、营销页面和应用页面,你不会想要为每一页重复所有的工作,对吧,与Nuxt不同,Vue 3并没有内置的布局系统,但是别担心,这里将向你展示3种简单的方法来实现这一点,需要的朋友可以参考下
    2023-08-08
  • Vue使用extend动态创建组件的实现

    Vue使用extend动态创建组件的实现

    本文主要介绍了Vue使用extend动态创建组件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • vue router返回到指定的路由的场景分析

    vue router返回到指定的路由的场景分析

    这篇文章主要介绍了vue router返回到指定的路由的场景分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • vue主动刷新页面及列表数据删除后的刷新实例

    vue主动刷新页面及列表数据删除后的刷新实例

    今天小编就为大家分享一篇vue主动刷新页面及列表数据删除后的刷新实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-09-09
  • Vue监听Enter键的方法总结与区别

    Vue监听Enter键的方法总结与区别

    这篇文章主要给大家介绍了关于Vue监听Enter键的方法与区别的相关资料,在Vue中我们可以通过监听键盘事件来实现回车键切换焦点的功能,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • Vue3使用Proxy构建高效响应式数据的示例代码

    Vue3使用Proxy构建高效响应式数据的示例代码

    在 Vue 3 中,Proxy 主要用于 拦截对象的基本操作,包括 属性读取(get)、修改(set)、删除(deleteProperty) 等,本文给大家介绍了Vue3使用Proxy构建高效响应式数据的操作教程,需要的朋友可以参考下
    2025-03-03
  • vue3 中的toRef函数和toRefs函数的基本使用

    vue3 中的toRef函数和toRefs函数的基本使用

    这篇文章主要介绍了vue3 toRef函数和toRefs函数,文中介绍了ref和toRef的区别,ref本质是拷贝,修改响应式数据不会影响原始数据,toRef的本质是引用关系,修改响应式数据会影响原始数据,需要的朋友可以参考下
    2022-11-11
  • vue中优雅实现数字递增特效的详细过程

    vue中优雅实现数字递增特效的详细过程

    项目中需要做数字滚动增加的效果,一开始很懵,研究了一下原理,发现很简单,下面这篇文章主要给大家介绍了关于vue中优雅实现数字递增特效的详细过程,需要的朋友可以参考下
    2022-12-12

最新评论