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的IE和火狐的兼容性注意事项
Mar 17 Javascript
jquery插件开发之实现md5插件
Mar 17 Javascript
Javascript玩转继承(一)
May 08 Javascript
详解Angular2中的编程对象Observable
Sep 17 Javascript
Vue+Vux项目实践完整代码
Nov 30 Javascript
js删除数组中的元素delete和splice的区别详解
Feb 03 Javascript
Angular 数据请求的实现方法
May 07 Javascript
使用layui 渲染table数据表格的实例代码
Aug 19 Javascript
手挽手带你学React之React-router4.x的使用
Feb 14 Javascript
利用原生JavaScript实现造日历轮子实例代码
May 08 Javascript
JQuery属性操作与循环用法示例
May 15 jQuery
使用layui前端框架弹出form表单以及提交的示例
Oct 25 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实现字符串大小写转函数的功能实例
2019/02/06 PHP
javascript 面向对象的JavaScript类
2010/05/04 Javascript
javascript中字符串拼接需注意的问题
2010/07/13 Javascript
JavaScript包装对象使用介绍
2013/08/29 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
2015/02/05 Javascript
JavaScript分页功能的实现方法
2015/04/25 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
原生JS轮播图插件
2017/02/09 Javascript
微信小程序实现滑动删除效果
2017/05/19 Javascript
简述jQuery Easyui一些用法
2017/08/01 jQuery
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
vue click.stop阻止点击事件继续传播的方法
2018/09/04 Javascript
vue中使用vue-cli接入融云实现即时通信
2019/04/19 Javascript
javascript实现简易聊天室
2019/07/12 Javascript
深入理解javascript prototype的相关知识
2019/09/19 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
2019/10/30 Javascript
VUEX 数据持久化,刷新后重新获取的例子
2019/11/12 Javascript
JavaScript/TypeScript 实现并发请求控制的示例代码
2021/01/18 Javascript
Python列表list数组array用法实例解析
2014/10/28 Python
python3实现暴力穷举博客园密码
2016/06/19 Python
python 简单的多线程链接实现代码
2016/08/28 Python
Python探索之修改Python搜索路径
2017/10/25 Python
python常用库之NumPy和sklearn入门
2019/07/11 Python
python读取与处理netcdf数据方式
2020/02/14 Python
python logging.info在终端没输出的解决
2020/05/12 Python
HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
2019/06/03 HTML / CSS
SmartBuyGlasses荷兰:购买太阳镜和眼镜
2020/03/16 全球购物
Napapijri西班牙在线商店:夹克、外套、运动衫等
2020/11/05 全球购物
PHP使用Redis队列执行定时任务实例讲解
2021/03/24 PHP
2014年综合治理工作总结
2014/11/20 职场文书
2015年信息技术教研组工作总结
2015/07/22 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js
python基础之函数的定义和调用
2021/10/24 Python
使用 Apache 反向代理的设置技巧
2022/01/18 Servers
Redis基本数据类型Zset有序集合常用操作
2022/06/01 Redis