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 各浏览器的 Javascript 效率对比
Jan 23 Javascript
基于jQuery的公告无限循环滚动实现代码
May 11 Javascript
JQuery操作iframe父页面与子页面的元素与方法(实例讲解)
Nov 20 Javascript
cookie的secure属性详解
Apr 08 Javascript
javascript显式类型转换实例分析
Apr 25 Javascript
浅谈javascript中return语句
Jul 15 Javascript
AngularJS基础 ng-readonly 指令简单示例
Aug 02 Javascript
简单理解Vue条件渲染
Dec 03 Javascript
JS中原始值和引用值的储存方式示例详解
Mar 23 Javascript
微信小程序实现tab左右切换效果
Nov 15 Javascript
10个最受欢迎的 JavaScript框架(推荐)
Apr 24 Javascript
原生js实现商品筛选功能
Oct 28 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 CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
php获取远程文件内容的函数
2015/11/02 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
PHP与SQL语句常用大全
2016/12/10 PHP
php使用parse_str实现查询字符串解析到变量中的方法
2017/02/17 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
jquery 实现的全选和反选
2009/04/15 Javascript
JS中confirm,alert,prompt函数区别分析
2011/01/17 Javascript
js onkeypress与onkeydown 事件区别详细说明
2012/12/13 Javascript
JQGrid的用法解析(列编辑,添加行,删除行)
2013/11/08 Javascript
javascript操作select元素实例分析
2015/03/27 Javascript
每天一篇javascript学习小结(Function对象)
2015/11/16 Javascript
Bootstrap布局组件应用实例讲解
2016/02/17 Javascript
使用pcs api往免费的百度网盘上传下载文件的方法
2016/03/17 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
详解vue 组件之间使用eventbus传值
2017/10/25 Javascript
Vue组件库发布到npm详解
2018/02/17 Javascript
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
javascript动态创建对象的属性详解
2018/11/07 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
如何提升vue.js中大型数据的性能
2019/06/21 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
详解uniapp的全局变量实现方式
2021/01/11 Javascript
在RedHat系Linux上部署Python的Celery框架的教程
2015/04/07 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
python虚拟环境完美部署教程
2019/08/06 Python
python保存log日志,实现用log日志画图
2019/12/24 Python
python模拟预测一下新型冠状病毒肺炎的数据
2020/02/01 Python
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
大学优秀班主任事迹材料
2014/05/02 职场文书
教师个人读书活动总结
2014/07/08 职场文书
小学生作文评语集锦
2014/12/25 职场文书
Mysql InnoDB 的内存逻辑架构
2022/05/06 MySQL