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中的面向对象
Nov 18 Javascript
JS动态调用方法名示例介绍
Dec 18 Javascript
js实现按钮控制图片360度翻转特效的方法
Feb 17 Javascript
jQuery+HTML5美女瀑布流布局实现方法
Sep 21 Javascript
JS弹出窗口插件zDialog简单用法示例
Jun 12 Javascript
Easyui的组合框的取值与赋值
Oct 28 Javascript
模板视图和AngularJS之间冲突的解决方法
Nov 22 Javascript
js数组实现权重概率分配
Sep 12 Javascript
vue刷新和tab切换实例
Feb 11 Javascript
详解Puppeteer 入门教程
May 09 Javascript
vue自定义指令directive的使用方法
Apr 07 Javascript
vue v-on:click传递动态参数的步骤
Sep 11 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 curl获取301或302转向的网址问题的解决方法
2011/06/02 PHP
php 面试碰到过的问题 在此做下记录
2011/06/09 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
Yii核心组件AssetManager原理分析
2014/12/02 PHP
php 无限分类 树形数据格式化代码
2016/10/11 PHP
一个Action如何调用两个不同的方法
2014/05/22 Javascript
一道常被人轻视的web前端常见面试题(JS)
2016/02/15 Javascript
纯js代码制作的网页时钟特效【附实例】
2016/03/30 Javascript
js将json格式的对象拼接成复杂的url参数方法
2016/05/25 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
Node.js实现一个HTTP服务器的方法示例
2019/05/13 Javascript
layui 数据表格复选框实现单选功能的例子
2019/09/19 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
vue 输入电话号码自动按3-4-4分割功能的实现代码
2020/04/30 Javascript
请求时token过期自动刷新token操作
2020/09/11 Javascript
[00:44]2016完美“圣”典 风云人物:Mikasa宣传片
2016/12/07 DOTA
python判断端口是否打开的实现代码
2013/02/10 Python
python3.4下django集成使用xadmin后台的方法
2017/08/15 Python
Python+selenium实现截图图片并保存截取的图片
2018/01/05 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
2018/12/04 Python
python实现一个简单的ping工具方法
2019/01/31 Python
Python日期时间Time模块实例详解
2019/04/15 Python
python爬虫 批量下载zabbix文档代码实例
2019/08/21 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
2020/11/06 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
CSS3之边框多颜色Border-color属性使用示例
2013/10/11 HTML / CSS
英国最大的滑板品牌选择:Route One
2019/09/22 全球购物
程序员岗位职责
2013/11/11 职场文书
合作协议书
2014/04/23 职场文书
2014教师个人自我评价范文
2014/09/13 职场文书
2014年镇党建工作汇报材料
2014/11/02 职场文书
2014幼儿园家长工作总结
2014/11/10 职场文书
2014年体育教学工作总结
2014/12/09 职场文书
公司人力资源管理制度
2015/08/05 职场文书
Oracle表空间与权限的深入讲解
2021/11/17 Oracle