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 相关文章推荐
JavaScript 浏览器验证代码(来自discuz)
Jul 17 Javascript
Jquery实现自定义弹窗示例
Mar 12 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
May 17 Javascript
javaScript如何跳出多重循环break、continue
Sep 01 Javascript
vue-cli脚手架引入图片的几种方法总结
Mar 13 Javascript
React中的render何时执行过程
Apr 13 Javascript
微信小程序实现评论功能
Nov 28 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
Feb 18 Javascript
jQuery事件多次绑定与解绑问题实例分析
Feb 19 jQuery
js实现随机8位验证码
Jul 24 Javascript
webpack HappyPack实战详解
Oct 08 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
Jul 20 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
网页游戏开发入门教程三(简单程序应用)
2009/11/02 PHP
php 带逗号千位符数字的处理方法
2012/01/10 PHP
JavaScript子窗口ModalDialog中操作父窗口对像
2012/12/11 Javascript
使用GruntJS构建Web程序之构建篇
2014/06/04 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
AngularJS 最常用的八种功能(基础知识)
2017/06/26 Javascript
vue实现页面加载动画效果
2017/09/19 Javascript
在Mac下彻底卸载node和npm的方法
2018/05/16 Javascript
JavaScript Array对象使用方法解析
2019/09/24 Javascript
详解Vue 项目中的几个实用组件(ts)
2019/10/29 Javascript
vue实现数字动态翻牌的效果(开箱即用)
2019/12/08 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
Python threading多线程编程实例
2014/09/18 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
2016/06/07 Python
使用Python脚本和ADB命令实现卸载App
2017/02/10 Python
Python爬虫之xlml解析库(全面了解)
2017/08/08 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
2018/10/29 Python
python爬取内容存入Excel实例
2019/02/20 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
python 正则表达式参数替换实例详解
2020/01/17 Python
Python单链表原理与实现方法详解
2020/02/22 Python
Python爬虫如何应对Cloudflare邮箱加密
2020/06/24 Python
Python通过字典映射函数实现switch
2020/11/06 Python
css3圆角边框和边框阴影示例
2014/05/05 HTML / CSS
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
澳大利亚领先的女帽及配饰公司:Morgan&Taylor
2019/12/01 全球购物
淘宝网店营销策划书
2014/01/11 职场文书
自荐信写法介绍
2014/01/25 职场文书
实习生矿工检讨书
2014/10/13 职场文书
四年级学生期末评语
2014/12/26 职场文书
2015年科研工作总结范文
2015/05/13 职场文书
2016年党支部公开承诺书
2016/03/25 职场文书
财务年终工作总结大全
2019/06/20 职场文书
生鲜超市—未来中国最具有潜力零售业态
2019/08/02 职场文书
SQL语句多表联合查询的方法示例
2022/04/18 MySQL