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 相关文章推荐
CSDN轮换广告图片轮换效果
Mar 27 Javascript
JS window.opener返回父页面的应用
Oct 24 Javascript
使用隐藏的new来创建对象
Mar 29 Javascript
jquery的冒泡事件的阻止与允许(三种实现方法)
Feb 01 Javascript
js实现在页面上弹出蒙板技巧简单实用
Apr 16 Javascript
原生javascript兼容性测试实例
Jul 01 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
Apr 16 Javascript
swtich/if...else的替代语句
Aug 16 Javascript
Bootstrap嵌入jqGrid,使你的table牛逼起来
May 05 Javascript
很棒的js选项卡切换效果
Jul 15 Javascript
Node.JS利用PhantomJs抓取网页入门教程
May 19 Javascript
vue-resouce设置请求头的三种方法
Sep 12 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文件下载类
2006/12/06 PHP
php 自写函数代码 获取关键字 去超链接
2010/02/08 PHP
深入解析php中的foreach函数
2013/08/31 PHP
php禁止某ip或ip地址段访问的方法
2015/02/25 PHP
PHP实现的回溯算法示例
2017/08/15 PHP
PHP中number_format()函数的用法讲解
2019/04/08 PHP
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
表单JS弹出填写提示效果代码
2011/04/16 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
javascript引用赋值(地址传值)用法实例
2015/01/13 Javascript
Javascript中With语句用法实例
2015/05/14 Javascript
js实现的黑背景灰色二级导航菜单效果代码
2015/08/24 Javascript
解析Node.js异常处理中domain模块的使用方法
2016/02/16 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
2016/05/17 Javascript
AngularJS基础 ng-hide 指令用法及示例代码
2016/08/01 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
BootStrap select2 动态改变值的方法
2017/02/10 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
基于vue的tab-list类目切换商品列表组件的示例代码
2020/02/14 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
python strip() 函数和 split() 函数的详解及实例
2017/02/03 Python
Python iter()函数用法实例分析
2018/03/17 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
python 求1-100之间的奇数或者偶数之和的实例
2019/06/11 Python
对pyqt5中QTabWidget的相关操作详解
2019/06/21 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
2019/07/23 Python
python图的深度优先和广度优先算法实例分析
2019/10/26 Python
全球才华横溢工匠的家居装饰、珠宝和礼物:NOVICA
2021/01/22 全球购物
澳大利亚网上书店:QBD
2021/01/09 全球购物
家庭教育先进个人事迹材料
2014/01/24 职场文书
灰雀教学反思
2014/04/28 职场文书
合作协议书模板2014
2014/09/26 职场文书
2015年公司中秋节致辞
2015/07/31 职场文书
vue选项卡切换的实现案例
2022/04/11 Vue.js