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 相关文章推荐
javascript Demo模态窗口
Dec 06 Javascript
js控制div及网页相关属性的代码
Dec 19 Javascript
JQuery在光标位置插入内容的实现代码
Jun 18 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
Jul 16 Javascript
一个支持任意尺寸的图片上下左右滑动效果
Aug 24 Javascript
jQuery实现图片渐入渐出切换展示效果
Aug 15 Javascript
indexedDB bootstrap angularjs之 MVC DOMO (应用示例)
Jun 20 Javascript
AngularJS 指令详细介绍
Jul 27 Javascript
原生js仿浏览器滚动条效果
Mar 02 Javascript
详谈js对url进行编码和解码(三种方式的区别)
Aug 16 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
Dec 20 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
Aug 16 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中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
2011/08/23 PHP
PHP闭包(Closure)使用详解
2013/05/02 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
html下载本地
2006/06/19 Javascript
JS宝典学习笔记(下)
2007/01/10 Javascript
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
人人网javascript面试题 可以提前实现下
2012/01/05 Javascript
JavaScript 学习笔记之一jQuery写法图片等比缩放以及预加载
2012/06/28 Javascript
Jquery attr(&quot;checked&quot;) 返回checked或undefined 获取选中失效
2013/10/10 Javascript
js中日期的加减法
2015/05/06 Javascript
javascript实现跨域的方法汇总
2015/06/25 Javascript
javascript中的previousSibling和nextSibling的正确用法
2015/09/16 Javascript
基于javascript实现checkbox复选框实例代码
2016/01/28 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
vue实现导航标题栏随页面滚动渐隐渐显效果
2020/03/12 Javascript
浅谈JS for循环中使用break和continue的区别
2020/07/21 Javascript
js实现简易拖拽的示例
2020/10/26 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
[02:54]辉夜杯主赛事第二日败者组 iG.V赛后采访
2015/12/26 DOTA
浅谈Python 对象内存占用
2016/07/15 Python
python实现图片筛选程序
2018/10/24 Python
python实现三维拟合的方法
2018/12/29 Python
Python 类的私有属性和私有方法实例分析
2019/09/29 Python
python+tifffile之tiff文件读写方式
2020/01/13 Python
python numpy库linspace相同间隔采样的实现
2020/02/25 Python
浅谈tensorflow模型保存为pb的各种姿势
2020/05/25 Python
高中毕业自我鉴定
2013/12/16 职场文书
工程造价专业大学生职业生涯规划书
2014/01/18 职场文书
共产党员岗位承诺书
2014/05/29 职场文书
医院见习报告范文
2014/11/03 职场文书
2016高校自主招生自荐信范文
2016/01/28 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书
python基于tkinter制作m3u8视频下载工具
2021/04/24 Python
详解Js模块化的作用原理和方案
2021/04/29 Javascript
PHP中国际化的字符串排序和比较对象详解
2021/08/23 PHP