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 相关文章推荐
js 判断checkbox是否选中的实现代码
Nov 23 Javascript
onkeydown事件解决按回车键直接提交数据的需求
Apr 11 Javascript
javascript实现给定半径求出圆的面积
Jun 26 Javascript
angularjs表格分页功能详解
Jan 21 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
May 11 Javascript
简单易懂的天气插件(代码分享)
Feb 04 Javascript
JAVA中截取字符串substring用法详解
Apr 14 Javascript
jQuery实现广告条滚动效果
Aug 22 jQuery
JavaScript使用atan2来绘制箭头和曲线的实例
Sep 14 Javascript
Vue添加请求拦截器及vue-resource 拦截器使用
Nov 23 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
Jul 19 Javascript
Nuxt的路由配置和参数传递方式
Nov 06 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
javascript 小型动画组件与实现代码
2010/06/02 PHP
PHP大批量数据操作时临时调整内存与执行时间的方法
2011/04/20 PHP
php中的PHP_EOL换行符详细解析
2013/10/26 PHP
php对数组排序代码分享
2014/02/24 PHP
使用CodeIgniter的类库做图片上传
2014/06/12 PHP
PHP替换Word中变量并导出PDF图片的实现方法
2020/11/26 PHP
地址栏上的一段语句,改变页面的风格。(教程)
2008/04/02 Javascript
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
2009/10/24 Javascript
自用js开发框架小成 学习js的朋友可以看看
2010/11/16 Javascript
js TextArea的选中区域处理
2010/12/28 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
JQuery EasyUI 加载两次url的原因分析及解决方案
2014/08/18 Javascript
基于jquery实现可定制的web在线富文本编辑器附源码下载
2015/11/17 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
JQuery Ajax 异步操作之动态添加节点功能
2017/05/24 jQuery
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
2018/09/29 Javascript
vue axios post发送复杂对象问题
2019/06/04 Javascript
使用axios请求时,发送formData请求的示例
2019/10/29 Javascript
python实现对求解最长回文子串的动态规划算法
2018/06/02 Python
django富文本编辑器的实现示例
2019/04/10 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
python matplotlib工具栏源码探析三之添加、删除自定义工具项的案例详解
2021/02/25 Python
css3中单位px,em,rem,vh,vw,vmin,vmax的区别及浏览器支持情况
2016/12/06 HTML / CSS
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
Piercing Pagoda官网:耳环、戒指、项链、手链等
2020/09/28 全球购物
用C语言实现文件读写操作
2013/10/27 面试题
高级工程师岗位职责
2013/12/15 职场文书
小学毕业感言300字
2014/02/19 职场文书
投标人廉洁自律承诺书
2014/05/26 职场文书
预备党员考察表党小组意见
2015/06/01 职场文书
南极大冒险观后感
2015/06/05 职场文书
Windows下载并安装MySQL8.0.x 版本的完整教程
2022/04/10 MySQL
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android