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 相关文章推荐
EXTjs4.0的store的findRecord的BUG演示代码
Jun 08 Javascript
js为数字添加逗号并格式化数字的代码
Aug 23 Javascript
jQuery实现设置、移除文本框默认值功能
Jan 13 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
Dec 14 Javascript
微信小程序通过api接口将json数据展现到小程序示例
Jan 20 Javascript
微信小程序 后台登录(非微信账号)实例详解
Mar 31 Javascript
简单谈谈React中的路由系统
Jul 25 Javascript
node.js实现的装饰者模式示例
Sep 06 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
Sep 18 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
Mar 25 Javascript
微信小程序云开发如何使用npm安装依赖
May 18 Javascript
vue实现顶部菜单栏
Nov 08 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修改时间格式的代码
2011/05/29 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
php正则表达式学习笔记
2015/11/13 PHP
详解在YII2框架中使用UEditor编辑器发布文章
2018/11/02 PHP
详细讲解JS节点知识
2010/01/31 Javascript
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
js网页侧边随页面滚动广告效果实现
2011/04/14 Javascript
jQuery实现感应鼠标动画效果自动伸长的输入框实例
2015/02/24 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
2015/08/24 Javascript
基于JavaScript实现仿京东图片轮播效果
2015/11/06 Javascript
深入解析JavaScript中的arguments对象
2016/06/12 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
JS排序算法之希尔排序与快速排序实现方法
2017/12/12 Javascript
JQuery元素快速查找与操作
2018/04/22 jQuery
微信小程序自定义tab实现多层tab嵌套功能
2018/06/15 Javascript
vue生命周期与钩子函数简单示例
2019/03/13 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
借助云开发实现小程序短信验证码的发送
2020/01/06 Javascript
小程序瀑布流组件实现翻页与图片懒加载
2020/05/19 Javascript
JS使用Chrome浏览器实现调试线上代码
2020/07/23 Javascript
解决vue addRoutes不生效问题
2020/08/04 Javascript
[02:16]深扒TI7聊天轮盘语音出处2
2017/05/11 DOTA
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
2015/08/16 Python
python 实现多线程下载视频的代码
2019/11/15 Python
韩国保养品、日本药妆购物网:小三美日
2018/12/30 全球购物
介绍Java的内部类
2012/10/27 面试题
简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?
2016/11/20 面试题
网站设计师的岗位职责
2013/11/21 职场文书
同学会主持词
2014/03/18 职场文书
小学生安全演讲稿
2014/04/25 职场文书
优秀党员自我评价范文
2014/09/15 职场文书
标枪加油稿
2015/07/22 职场文书
2016婚礼主持词开场白
2015/11/24 职场文书
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript
Python 中的 copy()和deepcopy()
2021/11/07 Python
Python if else条件语句形式详解
2022/03/24 Python