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 相关文章推荐
关于textarea提交的内容无法换行的解决办法
Apr 09 Javascript
jQuery 关于伪类选择符的使用说明
Apr 24 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
Jun 20 Javascript
JavaScript验证18位身份证号码最后一位正确性的实现代码
Aug 07 Javascript
jQuery中parentsUntil()方法用法实例
Jan 07 Javascript
Vue.js Ajax动态参数与列表显示实现方法
Oct 20 Javascript
canvas学习之API整理笔记(二)
Dec 29 Javascript
Vue.js实战之Vuex的入门教程
Apr 01 Javascript
简单实现JS上传图片预览功能
Apr 14 Javascript
JavaScript实现三级级联特效
Nov 05 Javascript
vue.js整合mint-ui里的轮播图实例代码
Dec 27 Javascript
js实现的订阅发布者模式简单示例
Mar 14 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
经典的PHPer为什么被认为是草根?
2007/04/02 PHP
php 强制下载文件实现代码
2013/10/28 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
PHP中使用Imagick操作PSD文件实例
2015/01/26 PHP
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
jQuery 关于伪类选择符的使用说明
2013/04/24 Javascript
div拖拽插件——JQ.MoveBox.js(自制JQ插件)
2013/05/17 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
2016/03/02 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
AngularJS出现$http异步后台无法获取请求参数问题的解决方法
2016/11/03 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
jquery实时获取时间的简单实例
2017/01/26 Javascript
JS实现DOM节点插入操作之子节点与兄弟节点插入操作示例
2018/07/30 Javascript
ES6 新增的创建数组的方法(小结)
2019/08/01 Javascript
Vue快速实现通用表单验证的方法
2020/02/24 Javascript
vue实现禁止浏览器记住密码功能的示例代码
2021/02/03 Vue.js
python实现的阳历转阴历(农历)算法
2014/04/25 Python
Python实现单词翻译功能
2017/06/06 Python
Python如何快速上手? 快速掌握一门新语言的方法
2017/11/14 Python
python 实现视频流下载保存MP4的方法
2019/01/09 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
对pyqt5中QTabWidget的相关操作详解
2019/06/21 Python
Python实现Appium端口检测与释放的实现
2020/12/31 Python
印尼第一大家居、生活和家具电子商务:Ruparupa
2019/11/25 全球购物
如何写一份好的英文求职信
2014/03/19 职场文书
公司请假条格式
2014/04/11 职场文书
借款协议书
2014/04/12 职场文书
《槐乡五月》教学反思
2014/04/25 职场文书
我爱读书演讲稿
2014/05/07 职场文书
老龄工作先进事迹
2014/08/15 职场文书
租车协议书
2015/01/27 职场文书
2015圣诞节贺卡寄语
2015/03/24 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
2015毕业设计工作总结
2015/07/24 职场文书
Python 实现Mac 屏幕截图详解
2021/10/05 Python
永中文档在线转换预览基于nginx配置部署方案
2022/06/10 Servers