vue组件间通信子与父详解(二)


Posted in Javascript onNovember 07, 2017

接着vue组件父与子通信详解继续学习。

二、组件间通信(子组件传值给父组件)

通过事件的方式来完成数据的传输。

①在父组件中 定义一个方法,用来接收子组件所通过事件传来的值

methods:{
recvMsg:function(msg){

//参数msg就是子组件通过事件出来的数据

}
}

②绑定事件处理函数

事件一般情况 都是自定义事件

<child-component @myEvent="recvMsg"></child-component>

③在子组件触发事件

事件名,值
this.$emit('myEvent',myPhone)
//触发一个叫做myEvent的事件,同时把第二个参数数据传递给事件对应的处理函数

总结:

在Vue 中,父子组件的关系可以总结为 props down, events up。父组件通过 props 向下传递数据给子组件,子组件通过 events 给父组件发送消息。

<!doctype html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>组件间通信子传父</title>
  <script src="js/vue.js"></script>
 </head>
 <body>
 <div id="container">
    <p>{{msg}}</p>
    <parent-component></parent-component>
  </div>
  <script>
    //通过事件的方式传递
    //  绑定 -- 触发
    Vue.component("parent-component",{
      data:function(){
        return {
          sonMsg:""
        }
      },
      methods:{
        //msg参数要拿子传递的值          
        recvMsg:function(msg){
          console.log("父组件接收到子组件的数据"+msg);
          this.sonMsg = msg;

        }
      },
      template:`
        <div>
          <h1>这是父组件</h1>
          <p>子组件传来的数据为:{{sonMsg}}</p>
          <hr/>
          <child-component @customEvent="recvMsg"></child-component>
        </div>
      `
    })
    Vue.component("child-component",{
      methods:{
        sendMsg:function(){
          //来触发绑定给子组件的自定义方法
          //this.$emit("customEvent");第一个参数触发
          //this.$emit("customEvent");第二个参数传值
          this.$emit("customEvent","哈哈哈哈");
        },
      },
      template:`
        <div>
          <h1>这是子组件</h1>
          <button @click="sendMsg">senToFather</button>
        </div>
      `
    })
    new Vue({
      el:"#container",
      data:{
        msg:"Hello VueJs"
      }
    })
  </script>
 </body>
</html>

在子组件中放上一个input,点击按钮 把用户输入的内容发给父组件

<!doctype html>
<html>
 <head>
 <meta charset="UTF-8">
 <title>子与父之间的通信</title>
  <script src="js/vue.js"></script>
 </head>
 <body>
 <div id="container">
    <p>{{msg}}</p>
    <parent-component></parent-component>
  </div>
  <script>
  //创建父组件
    Vue.component("parent-component",{
    //data属性
      data:function(){
        return{
          sonMsg:""
        }
      },
      methods:{
        recvMsg:function(msg){
          this.sonMsg = msg
        }
      },
      template:`
        <div>
          <h1>父组件</h1>
          <h4>子组件传递的数据:{{sonMsg}}</h4>
          <child-component @customEvent="recvMsg"></child-component>
        </div>
      `
    })
    //创建子组件
    Vue.component("child-component",{
      data:function(){
        return {
          myInput:""
        }
      },
      methods:{
        sendMsg:function(){
          this.$emit("customEvent",this.myInput);
        }
      },
      template:`
        <div>
          <h1>子组件</h1>
          <input type="text" v-model="myInput"/>
          <button @click="sendMsg">发送</button>
        </div>
      `
    })
    new Vue({
      el:"#container",
      data:{
        msg:"Hello VueJs"
      }
    })
  </script>
 </body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery.closest(),parent(),parents()寻找父结点
Feb 17 Javascript
用按钮控制iframe显示的网页实现方法
Feb 04 Javascript
javascript 模拟坦克大战游戏(html5版)附源码下载
Apr 08 Javascript
jquery实现pager控件示例
Apr 09 Javascript
javascript实现校验文件上传控件实例
Apr 20 Javascript
BootStrap实用代码片段之一
Mar 22 Javascript
json对象转为字符串,当做参数传递时加密解密的实现方法
Jun 29 Javascript
vue.js实现的绑定class操作示例
Jul 06 Javascript
详解JS实现系统登录页的登录和验证
Apr 29 Javascript
基于ts的动态接口数据配置的详解
Dec 18 Javascript
详解vue-router的导航钩子(导航守卫)
Nov 02 Javascript
vue实现登陆页面开发实践
May 30 Vue.js
原生JS实现 MUI导航栏透明渐变效果
Nov 07 #Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
Nov 07 #Javascript
vue组件父与子通信详解(一)
Nov 07 #Javascript
vue组件父子间通信之综合练习(聊天室)
Nov 07 #Javascript
Mint UI 基于 Vue.js 移动端组件库
Nov 07 #Javascript
vue中SPA单页面应用程序详解
Nov 07 #Javascript
vue-router实现组件间的跳转(参数传递)
Nov 07 #Javascript
You might like
php中socket的用法详解
2014/10/24 PHP
php简单实现短网址(短链)还原的方法(测试可用)
2016/05/09 PHP
常用PHP数组排序函数归纳
2016/08/08 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
2015/10/01 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
使用Curl命令查看请求响应时间方法
2016/11/04 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
2016/12/14 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
vue实现表格过滤功能
2019/09/27 Javascript
Vue中使用Lodop插件实现打印功能的简单方法
2019/12/19 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
Python变量赋值的秘密分享
2018/04/03 Python
Python 实现引用其他.py文件中的类和类的方法
2018/04/29 Python
解决Python pandas df 写入excel 出现的问题
2018/07/04 Python
Windows下安装Scrapy
2018/10/17 Python
Python 调用 Outlook 发送邮件过程解析
2019/08/08 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
python全局变量引用与修改过程解析
2020/01/07 Python
Python常用编译器原理及特点解析
2020/03/23 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
Python二元算术运算常用方法解析
2020/09/15 Python
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
2020/03/17 HTML / CSS
New Balance澳大利亚官网:运动鞋和健身服装
2019/02/23 全球购物
幼儿师范毕业生自荐信
2013/11/09 职场文书
体育教师自荐信范文
2013/12/16 职场文书
学校招生宣传广告词
2014/03/19 职场文书
门面房租房协议书
2014/12/01 职场文书
2015年党性分析材料
2014/12/19 职场文书
团员个人年度总结
2015/02/26 职场文书
肖申克救赎观后感
2015/06/02 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL
Linux中文件的基本属性介绍
2022/06/01 Servers