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 相关文章推荐
拖动一个HTML元素
Dec 22 Javascript
DOM 基本方法
Jul 18 Javascript
Array, Array Constructor, for in loop, typeof, instanceOf
Sep 13 Javascript
jquery 中ajax执行的优先级
Jun 22 Javascript
JS简单限制textarea内输入字符数量的方法
Oct 14 Javascript
利用JavaScript实现拖拽改变元素大小
Dec 14 Javascript
BootStrap实现鼠标悬停下拉列表功能
Feb 17 Javascript
利用Jasmine对Angular进行单元测试的方法详解
Jun 12 Javascript
angular.extend方法的具体使用
Sep 14 Javascript
ECMAScript6变量的解构赋值实例详解
Sep 19 Javascript
元素全屏的设置与监听实例
Nov 28 Javascript
小程序转发探索示例
Feb 19 Javascript
原生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和ACCESS写聊天室(三)
2006/10/09 PHP
php上传图片生成缩略图(GD库)
2016/01/06 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
JavaScript中的onerror事件概述及使用
2013/04/01 Javascript
jQuery中[attribute^=value]选择器用法实例
2014/12/31 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
2015/11/30 Javascript
基于jquery实现省市联动特效
2015/12/17 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
2016/10/18 Javascript
JavaScript 计算笛卡尔积实例详解
2016/12/02 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
2017/05/08 jQuery
vue单页面应用打开新窗口显示跳转页面的实例
2018/09/21 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
泛谈JS逻辑判断选择器 || &amp;&amp;
2019/05/24 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
编写一个javascript元循环求值器的方法
2020/04/14 Javascript
Python使用代理抓取网站图片(多线程)
2014/03/14 Python
使用Python实现一个简单的项目监控
2015/03/31 Python
Python读取一个目录下所有目录和文件的方法
2016/07/15 Python
Python tkinter实现简单加法计算器代码实例
2020/05/13 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
使用JS+CSS3技术:让你的名字动起来
2013/04/27 HTML / CSS
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
解析浏览器的一些“滚动”行为鉴赏
2019/09/16 HTML / CSS
英国拳击装备购物网站:RDX Sports
2018/01/23 全球购物
vue+django实现下载文件的示例
2021/03/24 Vue.js
快递业务员岗位职责
2014/01/06 职场文书
团员年度个人总结
2015/02/26 职场文书
医务人员医德考评自我评价
2015/03/03 职场文书
服务员岗位职责范本
2015/04/09 职场文书
接收函
2019/04/22 职场文书
Pycharm远程调试和MySQL数据库授权问题
2022/03/18 MySQL
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python