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 相关文章推荐
jQuery实现的类flash菜单效果代码
May 17 Javascript
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
Oct 31 Javascript
JavaScript中的noscript元素属性位置及作用介绍
Apr 11 Javascript
在Docker快速部署Node.js应用的详细步骤
Sep 02 Javascript
详解jQuery事件
Jan 13 Javascript
详解vue嵌套路由-params传递参数
May 23 Javascript
webpack配置之后端渲染详解
Oct 26 Javascript
react项目如何使用iconfont的方法步骤
Mar 13 Javascript
基于Vue全局组件与局部组件的区别说明
Aug 11 Javascript
Postman无法正常返回结果问题解决
Aug 28 Javascript
微信小程序实现倒计时功能
Nov 19 Javascript
如何在vue-cli中使用css-loader实现css module
Jan 07 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超级全局变量
2010/01/26 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
PHP两种去掉数组重复值的方法比较
2014/06/19 PHP
PHP实现恶意DDOS攻击避免带宽占用问题方法
2015/05/27 PHP
thinkPHP框架自动填充原理与用法分析
2018/04/03 PHP
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
2012/09/19 Javascript
js获取对象为null的解决方法
2013/11/21 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
快速掌握Node.js模块封装及使用
2016/03/21 Javascript
jQuery对象的链式操作用法分析
2016/05/10 Javascript
基于jquery实现ajax无刷新评论
2020/08/19 Javascript
Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)
2016/06/22 Javascript
解决vue attr取不到属性值的问题
2018/09/18 Javascript
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
2019/11/01 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
[46:43]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第三局
2016/02/28 DOTA
从列表或字典创建Pandas的DataFrame对象的方法
2019/07/06 Python
python求绝对值的三种方法小结
2019/12/04 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
全球知名提供各类营养保健品的零售商:Vitamin Shoppe
2016/10/09 全球购物
Get The Label中文官网:英国运动时尚购物平台
2017/04/19 全球购物
Nicole Miller官方网站:纽约女装品牌
2019/09/14 全球购物
Haggar官网:美国男装品牌
2020/02/16 全球购物
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
博士学位自我鉴定范文
2013/12/26 职场文书
电子商务自荐书范文
2014/01/04 职场文书
公司培训欢迎词
2014/01/10 职场文书
请假条的格式
2014/04/11 职场文书
优秀班集体事迹材料
2014/12/25 职场文书
幼儿园迎新生欢迎词
2015/09/30 职场文书
Pytorch实现图像识别之数字识别(附详细注释)
2021/05/11 Python
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python