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 相关文章推荐
在Iframe中获取父窗口中表单的值(示例代码)
Nov 22 Javascript
js 鼠标移动显示图片的简单实例
Dec 25 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
Jun 17 Javascript
node.js中的console.dir方法使用说明
Dec 10 Javascript
JavaScript数据存储 Cookie篇
Jul 02 Javascript
BootStrap3中模态对话框的使用
Jan 06 Javascript
jQuery实现表格元素动态创建功能
Jan 09 Javascript
巧用weui.topTips验证数据的实例
Apr 17 Javascript
React Native时间转换格式工具类分享
Oct 24 Javascript
基于Vue框架vux组件库实现上拉刷新功能
Nov 28 Javascript
CentOS环境中MySQL修改root密码方法
Jan 07 Javascript
vue进入页面时滚动条始终在底部代码实例
Mar 26 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
第八节--访问方式
2006/11/16 PHP
用PHP+MySQL搭建聊天室功能实例代码
2012/08/20 PHP
php读取本地json文件的实例
2018/03/07 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
2019/10/24 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
jquery JSON的解析方式
2009/07/25 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
angularJS 中input示例分享
2015/02/09 Javascript
JavaScript的设计模式经典之代理模式
2016/02/24 Javascript
JavaScript中的跨浏览器事件操作的基本方法整理
2016/05/20 Javascript
jQuery继承extend用法详解
2016/10/10 Javascript
bootstrap table小案例
2016/10/21 Javascript
bootstrap网格系统使用方法解析
2017/01/13 Javascript
详解cordova打包成webapp的方法
2017/10/18 Javascript
JS引用传递与值传递的区别与用法分析
2018/06/01 Javascript
vue项目引入Iconfont图标库的教程图解
2018/10/24 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
基于VSCode调试网页JavaScript代码过程详解
2020/07/20 Javascript
[56:47]Ti4 循环赛第三日 iG vs Liquid
2014/07/12 DOTA
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
python+pygame简单画板实现代码实例
2017/12/13 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
2018/11/29 Python
解决Django layui {{}}冲突的问题
2019/08/29 Python
CSS3实现歌词进度文字颜色填充变化动态效果的思路详解
2020/06/02 HTML / CSS
详解如何用canvas画一个微笑的表情
2019/03/14 HTML / CSS
历史学专业个人的自我评价
2013/10/13 职场文书
优秀求职信范文分享
2013/12/19 职场文书
大学毕业感言100字
2014/02/03 职场文书
医院党员公开承诺书
2014/08/30 职场文书
2014年机关党建工作总结
2014/11/11 职场文书
2015员工年度考核评语
2015/03/25 职场文书
幼儿园教师辞职信
2019/06/21 职场文书
JS ES6异步解决方案
2021/04/29 Javascript