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 timers计时器简单应用说明
Oct 28 Javascript
超棒的响应式布局jQuery插件Freetile.js
Nov 17 Javascript
javascript制作网页图片上实现下雨效果
Feb 26 Javascript
javaScript数组迭代方法详解
Apr 14 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐)
Jun 23 Javascript
JS如何设置iOS中微信浏览器的title
Nov 22 Javascript
js获取ip和地区
Mar 10 Javascript
vue.js实例对象+组件树的详细介绍
Oct 20 Javascript
基于javascript中的typeof和类型判断(详解)
Oct 27 Javascript
node内置调试方法总结
Feb 22 Javascript
AngularJS动态生成select下拉框的方法实例
Nov 17 Javascript
Javascript的promise,async和await的区别详解
Mar 24 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
分页显示Oracle数据库记录的类之二
2006/10/09 PHP
php 设计模式之 单例模式
2008/12/19 PHP
php Session存储到Redis的方法
2013/11/04 PHP
PHP模板解析类实例
2015/07/09 PHP
PHP中Notice错误常见解决方法
2017/04/28 PHP
PHP从数组中删除元素的四种方法实例
2017/05/12 PHP
利用javaScript实现点击输入框弹出窗体选择信息
2013/12/11 Javascript
基于NodeJS的前后端分离的思考与实践(二)模版探索
2014/09/26 NodeJs
使用jQuery实现input数值增量和减量的方法
2015/01/24 Javascript
JQ技术实现注册页面带有校验密码强度
2015/07/27 Javascript
js实现表单检测及表单提示的方法
2015/08/14 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
2015/08/23 Javascript
JS实现在状态栏显示打字效果完整实例
2015/11/02 Javascript
详解JavaScript基于面向对象之创建对象(1)
2015/12/10 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
JavaScript验证知识整理
2017/03/24 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
JS实现的合并多个数组去重算法示例
2018/04/11 Javascript
基于JS实现web端录音与播放功能
2019/04/17 Javascript
vue 实现websocket发送消息并实时接收消息
2019/12/09 Javascript
python实现数通设备tftp备份配置文件示例
2014/04/02 Python
Python中的下划线详解
2015/06/24 Python
使用Python简单的实现树莓派的WEB控制
2016/02/18 Python
selenium+python实现1688网站验证码图片的截取功能
2018/08/14 Python
PyTorch加载自己的数据集实例详解
2020/03/18 Python
家得宝加拿大家装网上商店:The Home Depot加拿大
2016/08/27 全球购物
西班牙在线光学:Visual-Click
2020/06/22 全球购物
sealed修饰符是干什么的
2012/10/23 面试题
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
结婚邀请函范文
2014/01/14 职场文书
创建精神文明单位实施方案
2014/03/08 职场文书
2014年大学生就业规划书
2014/04/04 职场文书
网络编辑求职信
2014/04/30 职场文书
车间安全生产管理制度
2015/08/06 职场文书
vue配置型表格基于el-table拓展之table-plus组件
2022/04/12 Vue.js