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 23 Javascript
如何快速的呈现我们的网页的技巧整理
Jul 01 Javascript
js的逻辑运算符 ||
May 31 Javascript
js的Boolean对象初始值示例
Mar 04 Javascript
JavaScript的jQuery库中function的存在和参数问题
Aug 13 Javascript
js实现前端分页页码管理
Jan 06 Javascript
使用JavaScriptCore实现OC和JS交互详解
Mar 28 Javascript
vue.js父组件使用外部对象的方法示例
Apr 25 Javascript
在HTML文档中嵌入JavaScript的四种方法
May 07 Javascript
jQuery实现的响应鼠标移动方向插件用法示例【附源码下载】
Aug 28 jQuery
vue中的mvvm模式讲解
Jan 31 Javascript
Openlayers学习之加载鹰眼控件
Sep 28 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
十天学会php(3)
2006/10/09 PHP
php替换超长文本中的特殊字符的函数代码
2012/05/22 PHP
基于PHP Socket配置以及实例的详细介绍
2013/06/13 PHP
php调用shell的方法
2014/11/05 PHP
PHP简单实现上一页下一页功能示例
2016/09/14 PHP
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
2016/03/08 Javascript
AngularJS中的JSONP实例解析
2016/12/01 Javascript
js微信支付实现代码
2016/12/22 Javascript
Vue 短信验证码组件开发详解
2017/02/14 Javascript
基于Nodejs利用socket.io实现多人聊天室
2017/02/22 NodeJs
jQuery选择器之属性过滤选择器详解
2017/09/28 jQuery
详解node nvm进行node多版本管理
2017/10/21 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
JavaScript提升机制Hoisting详解
2019/10/23 Javascript
[43:58]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第一场 1月8日
2021/03/11 DOTA
Python中的深拷贝和浅拷贝详解
2015/06/03 Python
Python File readlines() 使用方法
2018/03/19 Python
pandas创建新Dataframe并添加多行的实例
2018/04/08 Python
Python 查找字符在字符串中的位置实例
2018/05/02 Python
mac下pycharm设置python版本的图文教程
2018/06/13 Python
python调用百度语音REST API
2018/08/30 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
Python数据相关系数矩阵和热力图轻松实现教程
2020/06/16 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
HTML+CSS+JavaScript实现图片3D展览的示例代码
2020/10/12 HTML / CSS
专科毕业生自我鉴定
2013/12/01 职场文书
学校师德承诺书
2014/05/23 职场文书
法人代表授权委托书范文
2014/09/10 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
小学生作文评语集锦
2014/12/25 职场文书
车间质检员岗位职责
2015/04/08 职场文书
CSS中使用grid布局实现一套模板多种布局
2022/07/15 HTML / CSS