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的6个Tab选项卡插件
Sep 03 Javascript
javascript实现信息的显示和隐藏如注册页面
Dec 03 Javascript
javascript中setTimeout的问题解决方法
May 08 Javascript
浅谈Node.js中的定时器
Jun 18 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
Oct 08 Javascript
javascript Slip.js实现整屏滑动的手机网页
Nov 25 Javascript
限制复选框最多选择项的实现代码
May 30 Javascript
浅谈JavaScript 覆盖原型以及更改原型
Aug 31 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
Feb 05 Javascript
微信小程序分包加载代码实现方法详解
Sep 23 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
Apr 22 Javascript
javascript开发实现贪吃蛇游戏
Jul 31 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利用func_get_args和func_num_args函数实现函数重载实例
2014/11/12 PHP
浅谈PHP的反射API
2017/02/26 PHP
escape、encodeURI、encodeURIComponent等方法的区别比较
2006/12/27 Javascript
Javascript面向对象编程
2012/03/18 Javascript
js字符串完全替换函数分享
2014/12/03 Javascript
javascript折半查找详解
2015/01/26 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
javascript css红色经典选项卡效果实现代码
2016/05/17 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
javascript实现二叉树遍历的代码
2017/06/08 Javascript
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
vue计算属性和监听器实例解析
2018/05/10 Javascript
bootstrap treeview 树形菜单带复选框及级联选择功能
2018/06/08 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
2018/07/05 Javascript
nodejs语言实现验证码生成功能的示例代码
2019/10/13 NodeJs
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
简介Django中内置的一些中间件
2015/07/24 Python
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
python字典键值对的添加和遍历方法
2016/09/11 Python
python requests证书问题解决
2019/09/05 Python
详解在python操作数据库中游标的使用方法
2019/11/12 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
基于python实现坦克大战游戏
2020/10/27 Python
用HTML5制作数字时钟的教程
2015/05/11 HTML / CSS
比驿:全球酒店比价网
2018/06/20 全球购物
澳大利亚运动鞋商店:Platypus Shoes
2019/09/27 全球购物
冰淇淋店的创业计划书
2014/02/07 职场文书
数控技术学生的自我评价
2014/02/15 职场文书
诚信考试承诺书
2014/03/27 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
《鸟岛》教学反思
2014/04/26 职场文书
实习协议书范本
2014/09/25 职场文书
2014大学辅导员工作总结
2014/12/02 职场文书
获奖感言一句话
2015/07/31 职场文书