Vue子组件向父组件通信与父组件调用子组件中的方法


Posted in Javascript onJune 22, 2018

子组件向父组件通信

子组件的button按钮绑定点击事件,事件方法名为sendToParent(),

该方法在子组件的methods中声明,实现功能this.$emit('cus-event',this.msg);

在父组件引入子组件,并给cus-event事件绑定doAction($event)方法,该方法中this.msg = e;console.log(e),

而msg已经在data中声明,其值为”子级消息”,故最终的输出结果为: 展示父级接收到的消息:子级消息

父组件调用子组件中的方法

点击父组件的button按钮,触发了click事件指向的useChild方法[该方法的行为是输出”父级消息”],

useChild方法在父组件的中的methods中声明,调用子组件中的方法,并传入参数str,即this.$refs.child1.getMsg(str);

而getMsg方法已经在子组件的methods中声明,其行为是console.log('子级组件收到父级的内容',str);,

所以,最终的输出结果为: 子级组件收到父级的内容 父级消息

代码示例(结合上面的分析理解代码)

<!DOCTYPE html> 
<html lang="en"> 
<head> 
  <meta charset="UTF-8"> 
  <title>子向父通信</title> 
  <style> 
    #app { 
      border: 1px solid blue; 
      width: 500px; 
      padding: 20px; 
      margin: auto; 
      border-radius: 8px; 
      background: fuchsia; 
    } 
    #wrapper { 
      border: 1px solid red; 
      width: 400px; 
      padding: 20px; 
      border-radius: 8px; 
      background: yellowgreen; 
      margin-top: 20px; 
    } 
  </style> 
  <script src="https://cdn.jsdelivr.net/npm/vue"></script> 
</head> 
<body> 
  <div id="app"> 
    <!-- 父组件 --> 
    <h1>这是父组件</h1> 
    <p>展示父级接收到的消息:{{msg}}</p> 
    <button @click="useChild(szStr)">调用子组件的方法</button> 
     <!-- cus-event为子组件自定义的事件名; doAction($event)为父组件的事件,参数$event不可少也不可写成其他--> 
    <!-- ref表示组件的别名 --> 
    <child @cus-event="doAction($event)" ref="child1"></child> 
  </div> 
</body> 
</html> 
<template id="child"> 
  <div id="wrapper"> 
    <!-- 子组件 --> 
    <h2>这是子组件</h2> 
    <button @click="sendToParent">向父组件发消息</button> 
  </div> 
</template> 
<script> 
  let child = { 
    template: '#child', 
    data() { 
      return { 
        msg: '子级消息' 
      }; 
    }, 
    methods: { 
      sendToParent() { 
        // 子组件只管发送消息,其中cus-event为自定义事件名(事件名不能写成驼峰法,多个单词用-连接),this.msg为要传递的参数。 
        this.$emit('cus-event', this.msg); 
      }, 
      getMsg(str) { 
        console.log('子级组件收到父级的内容', str); 
      } 
    } 
  }; 
  // 注意: .$mount('#app')跟实例内部el: '#app'是等价的 
  new Vue({ 
    data: { 
      msg: '', 
      szStr:'父级消息' 
    }, 
    components: { 
      child 
    }, 
    methods: { 
      doAction(e) { 
        console.log(this); 
        console.log(e); 
        this.msg = e; 
      }, 
      useChild(str) { 
        // 调用子组件的方法 
        // console.log(this); 
        // console.log(this.$refs); 
        // this.$refs.child1得到的子组件实例 
        this.$refs.child1.getMsg(str); 
      } 
    } 
  }).$mount('#app'); 
</script>

效果图

Vue子组件向父组件通信与父组件调用子组件中的方法

总结

以上所述是小编给大家介绍的Vue子组件向父组件通信与父组件调用子组件中的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js 单引号 传递方法
Jun 22 Javascript
超酷的网页音乐播放器DewPlayer使用方法
Dec 18 Javascript
那些年,我还在学习jquery 学习笔记
Mar 05 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
Apr 04 Javascript
jquery得到iframe src属性值的方法
Sep 25 Javascript
jQuery中next方法用法实例
Apr 24 Javascript
jQuery实现本地预览上传图片功能
Jan 08 Javascript
详解JavaScript数组和字符串中去除重复值的方法
Mar 07 Javascript
javascript中获取元素标签中间的内容的实现方法
Oct 08 Javascript
JS生成和下载二维码的代码
Dec 07 Javascript
ES6中let 和 const 的新特性
Sep 03 Javascript
Javascript查看大图功能代码实现
May 07 Javascript
Vue验证码60秒倒计时功能简单实例代码
Jun 22 #Javascript
JS实现图片转换成base64的各种应用场景实例分析
Jun 22 #Javascript
使用vue-infinite-scroll实现无限滚动效果
Jun 22 #Javascript
vue中实现左右联动的效果
Jun 22 #Javascript
JS实现关键词高亮显示正则匹配
Jun 22 #Javascript
JS获取指定月份的天数两种实现方法
Jun 22 #Javascript
vue实现点击当前标签高亮效果【推荐】
Jun 22 #Javascript
You might like
造就帕卡马拉的帕卡斯是怎么被发现的
2021/03/03 咖啡文化
PHP4 与 MySQL 数据库操作函数详解
2006/10/09 PHP
建立动态的WML站点(二)
2006/10/09 PHP
使用数据库保存session的方法
2006/10/09 PHP
php实现购物车功能(以大苹果购物网为例)
2017/03/09 PHP
Dom操作之兼容技巧分享
2011/09/20 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
JavaScript实现iframe自动高度调整和不同主域名跨域
2016/02/27 Javascript
详解JavaScript的内置对象
2016/12/07 Javascript
jQuery中DOM节点的删除方法总结(超全面)
2017/01/22 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
2017/07/08 jQuery
Angular如何引入第三方库的方法详解
2017/07/13 Javascript
React BootStrap用户体验框架快速上手
2018/03/06 Javascript
JavaScript变速动画函数封装添加任意多个属性
2019/04/03 Javascript
优雅的处理vue项目异常实战记录
2019/06/05 Javascript
Vue中图片Src使用变量的方法
2019/10/30 Javascript
uni-app实现点赞评论功能
2019/11/25 Javascript
JS事件循环机制event loop宏任务微任务原理解析
2020/08/04 Javascript
[53:49]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python实现基本线性数据结构
2016/08/22 Python
Python数据结构之栈、队列的实现代码分享
2017/12/04 Python
python 用lambda函数替换for循环的方法
2018/06/09 Python
Python 爬取携程所有机票的实例代码
2018/06/11 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
2019/08/13 Python
如何基于python实现归一化处理
2020/01/20 Python
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
库存图片、照片、矢量图、视频和音乐:Shutterstock
2021/02/12 全球购物
端口镜像是怎么实现的
2014/03/25 面试题
工厂厂长的职责
2013/12/12 职场文书
2015年财务科工作总结范文
2015/05/13 职场文书
常住证明范本
2015/06/23 职场文书
公司回复函格式
2015/07/14 职场文书
2016思想纪律作风整顿心得体会
2016/01/23 职场文书
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js