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 对表格的行和列都能加亮显示
Dec 26 Javascript
jquery中常用的SET和GET$(”#msg”).html循环介绍
Oct 09 Javascript
js中switch case循环实例代码
Dec 30 Javascript
举例讲解JavaScript substring()的使用方法
Nov 09 Javascript
JQuery核心函数是什么及使用方法介绍
May 03 Javascript
js实现交通灯效果
Jan 13 Javascript
微信小程序通过api接口将json数据展现到小程序示例
Jan 20 Javascript
jQuery阻止移动端遮罩层后页面滚动
Mar 15 Javascript
jquery实现简单实用的轮播器
May 23 jQuery
JavaScript使用atan2来绘制箭头和曲线的实例
Sep 14 Javascript
基于Vue过渡状态实例讲解
Sep 14 Javascript
详解javascript replace高级用法
Feb 17 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的一个登录的类 [推荐]
2007/03/16 PHP
自动生成文章摘要的代码[PHP 版本]
2007/03/20 PHP
一个php导出oracle库的php代码
2009/04/20 PHP
php 阴历-农历-转换类代码
2012/01/16 PHP
ThinkPHP之M方法实例详解
2014/06/20 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
Symfony查询方法实例小结
2017/06/28 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
使用bootstrap实现多窗口和拖动效果
2016/09/22 Javascript
jquery.multiselect多选下拉框实现代码
2016/11/11 Javascript
Vue 进阶教程之v-model详解
2017/05/06 Javascript
JavaScript用二分法查找数据的实例代码
2017/06/17 Javascript
javascript 开发之网页兼容各种浏览器
2017/09/28 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
JavaScript 中的12种循环遍历方法【总结】
2018/05/31 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
Vue实现剪贴板复制功能
2019/12/31 Javascript
详解element-ui动态限定的日期范围选择器代码片段
2020/07/03 Javascript
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
Python列表和元组的定义与使用操作示例
2017/07/26 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
python爬取网页内容转换为PDF文件
2020/07/28 Python
使用python实现http及ftp服务进行数据传输的方法
2018/10/26 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
python日志通过不同的等级打印不同的颜色(示例代码)
2021/01/13 Python
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
教育技术学专业职业规划书
2014/03/03 职场文书
优质服务活动实施方案
2014/05/02 职场文书
小学语文教学经验交流材料
2014/06/02 职场文书
公司开业庆典策划方案
2014/06/04 职场文书
应届生求职自荐信
2014/07/04 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书