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 相关文章推荐
flexigrid 类似ext grid的JS表格代码
Jul 17 Javascript
javascript里绝对用的上的字符分割函数总结
Jul 31 Javascript
js实现网页抽奖实例
Aug 05 Javascript
一波JavaScript日期判断脚本分享
Mar 06 Javascript
jqPlot jQuery绘图插件的使用
Jun 18 Javascript
浅谈Javascript数据属性与访问器属性
Jul 26 Javascript
vuejs实现递归树型菜单组件
Jan 13 Javascript
JS实现的判断方法、变量是否存在功能示例
Mar 28 Javascript
vue生命周期的探索
Apr 03 Javascript
轻松解决JavaScript定时器越走越快的问题
May 13 Javascript
探索node之事件循环的实现
Oct 30 Javascript
React-vscode使用jsx语法的问题及解决方法
Jun 21 Javascript
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的异常处理类Exception的使用及说明
2012/06/13 PHP
PHP代码保护--Zend Guard的使用详解
2013/06/03 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
javascript读取RSS数据
2007/01/20 Javascript
javascript实现二分查找法实现代码
2007/11/12 Javascript
Javascript 学习笔记 错误处理
2009/07/30 Javascript
javascript 触发事件列表 比较不错
2009/09/03 Javascript
javascript showModalDialog 内跳转页面的问题
2010/11/25 Javascript
30个最好的jQuery 灯箱插件分享
2011/04/25 Javascript
防止xss和sql注入:JS特殊字符过滤正则
2013/04/18 Javascript
iframe跨域通信封装详解
2015/08/11 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
2015/08/22 Javascript
基于jQuery全屏焦点图左右切换插件responsiveslides
2015/09/07 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
javascript之IE版本检测超简单方法
2016/08/20 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
JavaScrip数组删除特定元素的几种方法总结
2017/09/06 Javascript
vue复合组件实现注册表单功能
2017/11/06 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
vue js秒转天数小时分钟秒的实例代码
2018/08/08 Javascript
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
Python找出最小的K个数实例代码
2018/01/04 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
pandas之分组groupby()的使用整理与总结
2020/06/18 Python
全球知名旅游社区法国站点:TripAdvisor法国
2016/08/03 全球购物
澳大利亚最大的百货公司:Myer
2018/12/21 全球购物
求职信的要素有哪些呢
2013/12/26 职场文书
老总助理工作岗位职责
2014/02/06 职场文书
高三学生评语大全
2014/04/25 职场文书
党员自我剖析材料
2014/08/31 职场文书
考试作弊被抓检讨书
2014/10/02 职场文书
房产遗嘱范本
2015/08/06 职场文书
《火纹风花雪月无双》预告“神秘雇佣兵” 紫发剑客
2022/04/13 其他游戏