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 相关文章推荐
DIV菜单层实现代码
Nov 19 Javascript
JavaScript之IE的fireEvent方法详细解析
Nov 20 Javascript
深入理解jQuery中live与bind方法的区别
Dec 18 Javascript
jQuery 如何实现一个滑动按钮开关
Dec 01 Javascript
详解angularJs中自定义directive的数据交互
Jan 13 Javascript
assert()函数用法总结(推荐)
Jan 25 Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
Apr 20 Javascript
Javascript网页抢红包外挂实现分享
Jan 11 Javascript
JavaScript获取用户所在城市及地理位置
Apr 21 Javascript
vue实现多个元素或多个组件之间动画效果
Sep 25 Javascript
vue axios封装及API统一管理的方法
Apr 18 Javascript
解决vue一个页面中复用同一个echarts组件的问题
Jul 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的FTP学习(一)
2006/10/09 PHP
关于php fread()使用技巧
2010/01/22 PHP
php动态添加url查询参数的方法
2015/04/14 PHP
php实现购物车功能(下)
2016/01/05 PHP
PHP实现文件上传下载实例
2016/10/18 PHP
JS类定义原型方法的两种实现的区别评论很多
2007/09/12 Javascript
JS保留两位小数,多位小数的示例代码
2014/01/07 Javascript
兼容所有浏览器的js复制插件Zero使用介绍
2014/03/19 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
2015/08/05 Javascript
JSON字符串和对象相互转换实例分析
2016/06/16 Javascript
Java  Spring 事务回滚详解
2016/10/17 Javascript
基于Vue.js 2.0实现百度搜索框效果
2020/12/28 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
Element Rate 评分的使用方法
2020/07/27 Javascript
[03:42]2016国际邀请赛中国区预选赛首日现场玩家采访
2016/06/26 DOTA
[08:17]Ti9 现场cosplay
2019/09/10 DOTA
不要用强制方法杀掉python线程
2017/02/26 Python
解决python3爬虫无法显示中文的问题
2018/04/12 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
2018/04/18 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
Python中使用threading.Event协调线程的运行详解
2020/05/02 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
数据库面试要点基本概念
2013/10/31 面试题
暑期实习鉴定
2013/12/16 职场文书
矫正人员思想汇报
2014/01/08 职场文书
信息服务专业毕业生求职信
2014/03/02 职场文书
驾驶员安全责任书
2014/07/22 职场文书
诚实守信道德模范事迹材料
2014/08/15 职场文书
教师群众路线剖析材料
2014/09/29 职场文书
2014年科技工作总结
2014/11/26 职场文书
活动费用申请报告
2015/05/15 职场文书
MySQL 使用自定义变量进行查询优化
2021/05/14 MySQL
JAVA API 实用类 String详解
2021/10/05 Java/Android
PostgreSQL 插入INSERT、删除DELETE、更新UPDATE、事务transaction
2022/04/12 PostgreSQL
介绍一下28个JS常用数组方法
2022/05/06 Javascript
浅谈为什么我的 z-index 又不生效了
2022/07/15 HTML / CSS