Vue2.x中的父子组件相互通信的实现方法


Posted in Javascript onMay 02, 2017

业务场景:(这里指的是直接父子级关系的通信)

  • 美女(子组件)将消息发送给大群(父组件)
  • 大群(父组件)收到美女发送的消息后再回个信息给美女(子组件)

父组件

template

<template>
  <div>
    <p>群消息girl:</p>
    <div>
      {{ somebody }} 说: 我 {{ age }} 了。
    </div>
    <hr>
    <v-girl-group 
        :girls="aGirls" 
        :noticeGirl="noticeGirl"
        @introduce="introduceSelf"></v-girl-group>
  </div>
</template>

注意的点:

  • 这里在父组件使用v-on来监听子组件上的自定义事件($emit的变化),一旦发生变化noticeGirl方法就会触发
<script>
import vGirlGroup from './GirlGroup'
export default {
  name: 'girl',
  components: {
    vGirlGroup
  },
  data () {
    return {
      aGirls:[{
        name:'小丽',
        age:22
      },{
        name:'小美',
        age:21
      },{
        name:'小荷',
        age:24
      }],
      somebody:'',
      age:'',
      noticeGirl:''
    }
  },
  methods: {
    introduceSelf (opt) {
      this.somebody = opt.name;
      this.age = opt.age;
      // 通知girl收到消息
      this.noticeGirl = opt.name + ',已收到消息';
    }
  }
}
</script>

注意的点:

这里methods中定义的方法introduceSelf就是父组件接收到子组件发出的$emit的事件处理程序

子组件

template

<template>
  <div>
    <ul>
      <li v-for="(value, index) in girls">
        {{ index }} - {{ value.name }} - {{ value.age }} 
        <button @click="noticeGroup(value.name,value.age)">发送消息</button>
      </li> 
    </ul>
    <div>接收来自大群的消息:{{ noticeGirl }}</div>
  </div>
</template>

script

<script>
export default {
  name: 'girl-group',
  props: {
    girls: {
      type: Array,
      required: true
    },
    noticeGirl: {
      type: String,
      required: false
    }
  },
  methods: {
    noticeGroup (name, age) {
      this.$emit('introduce',{
        name: name,
        age: age
      })
    }
  }
}
</script>

注意的点:

子组件使用$emit发出自定义事件

相比于Vue1.x的变化:

$dispatch 和 $broadcast 已经被弃用

*官方推荐的通信方式

首选使用Vuex

使用事件总线:eventBus,允许组件自由交流

具体可见:https://cn.vuejs.org/v2/guide/migration.html#dispatch-和-broadcast-替换

结果

Vue2.x中的父子组件相互通信的实现方法

Vue2.x中的父子组件相互通信的实现方法

Vue2.x中的父子组件相互通信的实现方法

以上所述是小编给大家介绍的Vue2.x中的父子组件相互通信,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jQuery无刷新分页完整实例代码
Oct 27 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
Mar 18 Javascript
Easyui 之 Treegrid 笔记
Apr 29 Javascript
jsonp跨域请求实现示例
Mar 13 Javascript
JavaScript实现选中文字提示新浪微博分享效果
Jun 15 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
Sep 12 Javascript
jQuery实现的五星点评功能【案例】
Feb 18 jQuery
Jquery的autocomplete插件用法及参数讲解
Mar 12 jQuery
详解可以用在VS Code中的正则表达式小技巧
May 14 Javascript
微信小程序停止其他视频播放当前视频的实例代码
Dec 25 Javascript
《javascript设计模式》学习笔记一:Javascript面向对象程序设计对象成员的定义分析
Apr 07 Javascript
JavaScript实现手风琴效果
Feb 18 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
May 02 #Javascript
jQuery树插件zTree使用方法详解
May 02 #jQuery
JavaScript数据结构学习之数组、栈与队列
May 02 #Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
May 02 #Javascript
详解webpack+es6+angular1.x项目构建
May 02 #Javascript
jQuery Tree Multiselect使用详解
May 02 #jQuery
bootstrap的常用组件和栅格式布局详解
May 02 #Javascript
You might like
用PHP写的MySQL数据库用户认证系统代码
2007/03/22 PHP
解析php中die(),exit(),return的区别
2013/06/20 PHP
php上传文件并显示上传进度的方法
2015/03/24 PHP
YII Framework框架教程之国际化实现方法
2016/03/14 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
PHP生成word文档的三种实现方式
2016/11/14 PHP
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
比Jquery的document.ready更快的方法
2010/04/28 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
javascript实现表单提交后,提交按钮不可用的方法
2015/04/18 Javascript
jQuery插件uploadify实现ajax效果的图片上传
2016/06/18 Javascript
JavaScript每天必学之数组和对象部分
2016/09/17 Javascript
jQuery插件echarts实现的去掉X轴、Y轴和网格线效果示例【附demo源码下载】
2017/03/04 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
js模块加载方式浅析
2017/08/12 Javascript
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
通过实例解析JavaScript for in及for of区别
2020/06/15 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
[01:01:25]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第三局
2016/02/27 DOTA
python3.6 实现AES加密的示例(pyCryptodome)
2018/01/10 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
Python3自定义json逐层解析器代码
2020/05/11 Python
OpenCV图片漫画效果的实现示例
2020/08/18 Python
中国入世承诺
2014/04/01 职场文书
优秀教师先进个人事迹材料
2014/08/31 职场文书
党支部四风整改方案
2014/10/25 职场文书
2014年机关工会工作总结
2014/12/19 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
2019年鼓励无偿献血倡议书
2019/09/17 职场文书
Python+Appium新手教程
2021/04/17 Python
探讨Java中的深浅拷贝问题
2021/06/26 Java/Android
HTTP中的Content-type详解
2022/01/18 HTML / CSS
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS