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 相关文章推荐
在JS中解析HTML字符串示例代码
Apr 16 Javascript
javascript常见操作汇总
Sep 03 Javascript
node.js中的console用法总结
Dec 15 Javascript
js 判断一组日期是否是连续的简单实例
Jul 11 Javascript
BootStrap实现带关闭按钮功能
Feb 15 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
Oct 26 Javascript
基于Datatables跳转到指定页的简单实例
Nov 09 Javascript
mpvue跳转页面及注意事项
Aug 03 Javascript
对Vue- 动态元素属性及v-bind和v-model的区别详解
Aug 27 Javascript
从0到1构建vueSSR项目之路由的构建
Mar 07 Javascript
js贪心算法 钱币找零问题代码实例
Sep 11 Javascript
React如何创建组件
Jun 27 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 curl模拟浏览器抓取网站信息
2013/10/28 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
js读取本地excel文档数据的代码
2010/11/11 Javascript
JS弹出对话框返回值代码(asp.net后台)
2010/12/28 Javascript
jquery多选项卡效果实例代码(附效果图)
2013/03/23 Javascript
javascript表单验证使用示例(javascript验证邮箱)
2014/01/07 Javascript
jquery中checkbox全选失效的解决方法
2014/12/26 Javascript
jquery读取xml文件实现省市县三级联动的方法
2015/05/29 Javascript
基于jquery实现全屏滚动效果
2015/11/26 Javascript
js去字符串前后空格的实现方法
2016/02/26 Javascript
jquery横向纵向鼠标滚轮全屏切换
2017/02/27 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
python基础知识小结之集合
2015/11/25 Python
python操作字典类型的常用方法(推荐)
2016/05/16 Python
Python常用算法学习基础教程
2017/04/13 Python
django站点管理详解
2017/12/12 Python
Python机器学习库scikit-learn安装与基本使用教程
2018/06/25 Python
漂亮的Django Markdown富文本app插件的实现
2019/01/02 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
Python爬虫库requests获取响应内容、响应状态码、响应头
2020/01/25 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
工商学院毕业生个人自我评价
2013/09/19 职场文书
医药代表个人的求职信分享
2013/12/08 职场文书
考核工作实施方案
2014/03/30 职场文书
检举信的格式及范文
2014/04/04 职场文书
汽车专业求职信
2014/06/05 职场文书
体育节口号
2014/06/19 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
2015年纪念“卢沟桥事变”78周年活动方案
2015/05/06 职场文书
文明礼貌主题班会
2015/08/14 职场文书
Python内置数据类型中的集合详解
2022/03/18 Python
利用正则表达式匹配浮点型数据
2022/05/30 Java/Android