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 相关文章推荐
Microsoft Ajax Minifier 压缩javascript的方法
Mar 05 Javascript
JavaScript插件化开发教程 (一)
Jan 27 Javascript
详解JavaScript的变量和数据类型
Nov 27 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
Mar 02 Javascript
easyui datagrid 表格中操作栏 按钮图标不显示的解决方法
Jul 27 Javascript
bootstrap fileinput插件实现预览上传照片功能
Jan 23 Javascript
Vue源码探究之状态初始化
Nov 14 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【凹多边形的分离轴检测算法】
Dec 13 Javascript
es6中Promise 对象基本功能与用法实例分析
Feb 23 Javascript
JavaScript冒泡算法原理与实现方法深入理解
Jun 04 Javascript
详解vue路由
Aug 05 Javascript
Jquery $.map使用方法实例详解
Sep 01 jQuery
详解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 Google的translate API代码
2008/12/10 PHP
PHP的单引号和双引号 字符串效率
2009/05/27 PHP
PHP整数取余返回负数的相关解决方法
2014/05/15 PHP
PHP编程实现csv文件导入mysql数据库的方法
2017/04/29 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
2020/02/27 PHP
JQury slideToggle闪烁问题及解决办法
2011/07/05 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
js实现文本框支持加减运算的方法
2015/08/19 Javascript
Jquery和BigFileUpload实现大文件上传及进度条显示
2016/06/27 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
Vue.js列表渲染绑定jQuery插件的正确姿势
2017/06/29 jQuery
React 子组件向父组件传值的方法
2017/07/24 Javascript
JavaScript基础教程之如何实现一个简单的promise
2018/09/11 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
小程序新版订阅消息模板消息
2019/12/31 Javascript
Vue+Vuex实现自动登录的知识点详解
2020/03/04 Javascript
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
使用python BeautifulSoup库抓取58手机维修信息
2013/11/21 Python
python小技巧之批量抓取美女图片
2014/06/06 Python
python递归计算N!的方法
2015/05/05 Python
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
python使用Apriori算法进行关联性解析
2017/12/21 Python
Python之列表的插入&amp;替换修改方法
2018/06/28 Python
django框架使用orm实现批量更新数据的方法
2019/06/21 Python
在pyqt5中QLineEdit里面的内容回车发送的实例
2019/06/21 Python
Django的models模型的具体使用
2019/07/15 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
2020/06/02 Python
Python 没有main函数的原因
2020/07/10 Python
HTML5 embed标签定义和用法详解
2014/05/09 HTML / CSS
新学期开学标语
2014/06/30 职场文书
商务英语求职信范文
2015/03/19 职场文书
教师节简报
2015/07/20 职场文书
R9700摩机记
2022/04/05 无线电