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实现简单选项卡与自动切换效果的方法
Apr 10 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
Mar 04 Javascript
跨域资源共享 CORS 详解
Apr 26 Javascript
封装获取dom元素的简单实例
Jul 08 Javascript
微信小程序 wx.request(接口调用方式)详解及实例
Nov 23 Javascript
Bootstrap CSS组件之按钮下拉菜单
Dec 17 Javascript
JavaScript的继承实现小结
May 07 Javascript
AngularJS遍历获取数组元素的方法示例
Nov 11 Javascript
通过js给网页加上水印背景实例
Jun 17 Javascript
Vue 用Vant实现时间选择器的示例代码
Oct 25 Javascript
Vue事件处理原理及过程详解
Mar 11 Javascript
idea编译器vue缩进报错问题场景分析
Jul 04 Vue.js
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
PHP 类商品秒杀计时实现代码
2010/05/05 PHP
比较时间段一与时间段二是否有交集的php函数
2011/05/31 PHP
php实现读取超大文件的方法
2014/07/28 PHP
php使用curl简单抓取远程url的方法
2015/03/13 PHP
PHP静态延迟绑定和普通静态效率的对比
2017/10/20 PHP
jQuery操作 input type=checkbox的实现代码
2012/06/14 Javascript
js完美的div拖拽实例代码
2014/01/22 Javascript
动态加载脚本提升javascript性能
2014/02/24 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
2015/08/25 Javascript
js命名空间写法示例
2015/12/18 Javascript
javascript每日必学之继承
2016/02/23 Javascript
基于jQuery的ajax方法封装
2016/07/14 Javascript
bootstrap模态框消失问题的解决方法
2016/12/02 Javascript
解析微信JS-SDK配置授权,实现分享接口
2016/12/09 Javascript
vue表单绑定实现多选框和下拉列表的实例
2017/08/12 Javascript
Vuejs 单文件组件实例详解
2018/02/09 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
详解 微信小程序开发框架(MINA)
2019/05/17 Javascript
使用go和python递归删除.ds store文件的方法
2014/01/22 Python
简介Django框架中可使用的各类缓存
2015/07/23 Python
Python中顺序表的实现简单代码分享
2018/01/09 Python
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
Python3.5内置模块之random模块用法实例分析
2019/04/26 Python
Django的models中on_delete参数详解
2019/07/16 Python
python 利用jinja2模板生成html代码实例
2019/10/10 Python
css3 伪元素和伪类选择器详解
2014/09/04 HTML / CSS
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
1688平价精选商城:阿里集团旗下,工厂出厂价格直销
2017/04/24 全球购物
全球摩托车装备领导者:RevZilla
2017/09/04 全球购物
大学毕业生通用自我评价
2014/01/05 职场文书
电子邮箱格式怎么写
2014/01/12 职场文书
售房委托书
2014/08/30 职场文书
可可西里观后感
2015/06/08 职场文书
关于艺术节的开幕致辞
2016/03/04 职场文书
python 离散点图画法的实现
2022/04/01 Python