Vue中父子组件的值传递与方法传递


Posted in Javascript onSeptember 28, 2020

一.Vue中父组件向子组件传值

利用v-bind向子组件传值,子组件中利用props接受

<div id="app">
  <father></father>
</div>
<template id="father">
  <div>
    <!--注意点: 组件是可以使用自己的数据的-->
    <p>{{name}}</p>
    <p>{{age}}</p>
    <!--这里将父组件的name通过parentname传递给了子组件-->
    <son :parentname="name" :abc="age"></son>
  </div>
</template>
<template id="son">
  <div>
    <!--这里通过parentname使用了父组件传递过来的数据-->
    <p>{{parentname}}</p>
    <p>{{abc}}</p>
  </div>
</template>
<script>
  // 父组件
  Vue.component("father", {
    template: "#father",
    data: function(){
     return {
       name: "wqd",
       age: 21
     }
    },
    // 子组件
    components: {
      "son": {
        template: "#son",
        //这里通过parentname接收了父组件传递过来的数据
        props: ["parentname", "abc"]
      }
    }
  });
  // 这里就是MVVM中的View Model
  let vue = new Vue({
    el: '#app',
    // 这里就是MVVM中的Model
    data: {
    },
  });
</script>

二.Vue中父组件向子组件传递方法

父组件利用v-on传值,子组件this.$emit来接收

<div id="app">
  <father></father>
</div>
<template id="father">
  <div>
    <button @click="say">我是按钮</button>
    <!--这里通过parentsay将父组件的say方法传递给了子组件-->
    <son @parentsay="say"></son>
  </div>
</template>
<template id="son">
  <div>
    <button @click="sonFn">我是按钮</button>
  </div>
</template>
<script>
  // 父组件
  Vue.component("father", {
    template: "#father",
    methods: {
      say(){
        console.log("helloworld")
      }
    },
    // 子组件
    components: {
      "son": {
        template: "#son",
        /*
        注意点: 和传递数据不同, 如果传递的是方法, 那么在子组件中不需要接收,需要在子组件自定义的方法中通this.$emit("自定义接收的名称")的方法来触发父组件传递过来的方法
        */
        // props: ["parentsay"]
        methods: {
          sonFn(){
            this.$emit("parentsay");
          }
        }
      }
    }
  });
  // 这里就是MVVM中的View Model
  let vue = new Vue({
    el: '#app',
    // 这里就是MVVM中的Model
    data: {
    },
  });
</script>

三.Vue中子组件向父组件传值

this.$emit中第一个参数为接收父组件传递的方法,第二个参数即为向父组件传递的值

<div id="app">
  <father></father>
</div>
<template id="father">
  <div>
    <button @click="say">我是按钮</button>
    <!--这里通过parentsay将父组件的say方法传递给了子组件-->
    <son @parentsay="say"></son>
  </div>
</template>
<template id="son">
  <div>
    <button @click="sonFn">我是按钮</button>
  </div>
</template>
<script>
  // 父组件
  Vue.component("father", {
    template: "#father",
    methods: {
      //data用来接受子组件传递的值
      say(data){
        console.log(data);
      }
    },
    // 子组件
    components: {
      "son": {
        template: "#son",
        methods: {
          sonFn(){
            // 第一个参数: 需要调用的函数名称
            // 后续的参数: 给调用的函数传递的参数
            this.$emit("parentsay", "你好");
          }
        }
      }
    }
  });
  // 这里就是MVVM中的View Model
  let vue = new Vue({
    el: '#app',
    // 这里就是MVVM中的Model
    data: {
    },
    
  });
</script>

到此这篇关于Vue中父子组件的值传递与方法传递的文章就介绍到这了,更多相关Vue父子组件传递内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript StringBuilder类实现
Dec 22 Javascript
jquery select(列表)的操作(取值/赋值)
Aug 06 Javascript
Prototype的Class.create函数解析
Sep 22 Javascript
JS获取iframe中longdesc属性的方法
Apr 01 Javascript
用JavaScript实现PHP的urlencode与urldecode函数
Aug 13 Javascript
JS判断字符串字节数并截取长度的方法
Mar 05 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
Jan 14 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
May 02 Javascript
利用JS制作万年历的方法
Aug 16 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
Jan 16 Javascript
vue学习笔记之Vue中css动画原理简单示例
Feb 29 Javascript
vue3.0自定义指令(drectives)知识点总结
Dec 27 Vue.js
JSONObject与JSONArray使用方法解析
Sep 28 #Javascript
OpenLayer3自定义测量控件MeasureTool
Sep 28 #Javascript
Openlayers实现距离面积测量
Sep 28 #Javascript
Openlayers+EasyUI Tree动态实现图层控制
Sep 28 #Javascript
JS sort排序详细使用方法示例解析
Sep 27 #Javascript
vue中实现点击变成全屏的多种方法
Sep 27 #Javascript
通过实例解析json与jsonp原理及使用方法
Sep 27 #Javascript
You might like
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
Yii2 GridView实现列表页直接修改数据的方法
2016/05/16 PHP
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
JavaScript实现多维数组的方法
2013/11/20 Javascript
Jquery操作js数组及对象示例代码
2014/05/11 Javascript
超赞的动手创建JavaScript框架的详细教程
2015/06/30 Javascript
js实现简单秒表走动的时钟特效
2020/03/25 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
2015/12/04 Javascript
基于JavaScript实现智能右键菜单
2016/03/02 Javascript
实例解析jQuery中proxy()函数的用法
2016/05/24 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
Vue中使用sass实现换肤功能
2018/09/07 Javascript
微信小程序视图控件与bindtap之间的问题的解决
2019/04/08 Javascript
react-router-dom 嵌套路由的实现
2020/05/02 Javascript
聊聊vue 中的v-on参数问题
2021/01/29 Vue.js
[01:15:12]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#4Newbee VS CDEC
2016/03/03 DOTA
[01:00:25]NB vs Secret 2018国际邀请赛小组赛BO1 B组加赛 8.19
2018/08/21 DOTA
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
Python多线程编程(五):死锁的形成
2015/04/05 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
2016/06/16 Python
python Flask实现restful api service
2017/12/04 Python
Django 使用logging打印日志的实例
2018/04/28 Python
Python 读写文件的操作代码
2018/09/20 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
Python定时任务APScheduler原理及实例解析
2020/05/30 Python
基于PyTorch中view的用法说明
2021/03/03 Python
使用html2canvas实现浏览器截图的示例代码
2018/01/26 HTML / CSS
C++的几个面试题附答案
2016/08/03 面试题
编写类String的构造函数、析构函数和赋值函数
2012/05/29 面试题
预备党员党校学习自我评价分享
2013/11/12 职场文书
毕业生的自我评价范文
2013/12/31 职场文书
2014年保卫工作总结
2014/12/05 职场文书
大学生简历自我评价2015
2015/03/03 职场文书
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript