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使用手册之三 CSS操作
Mar 24 Javascript
简单实例处理url特殊符号&amp;处理(2种方法)
Apr 02 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
Dec 04 Javascript
JavaScript中读取和保存文件实例
May 08 Javascript
Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
Sep 17 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
Dec 10 Javascript
js在指定位置增加节点函数insertBefore()用法实例
Jan 12 Javascript
深入学习js瀑布流布局
Oct 14 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
Aug 04 jQuery
JavaScript惰性载入函数实例分析
Mar 27 Javascript
详解Vue中使用插槽(slot)、聚类插槽
Apr 12 Javascript
详解Vuex下Store的模块化拆分实践
Jul 31 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下通过系统信号量加锁方式获取递增序列ID
2009/09/25 PHP
PHP字符串的递增和递减示例介绍
2014/02/11 PHP
PHP生成网站桌面快捷方式代码分享
2014/10/11 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
js下弹出窗口的变通
2007/04/18 Javascript
jquery利用ajax调用后台方法实例
2013/08/23 Javascript
Javascript执行效率全面总结
2013/11/04 Javascript
jQuery实现鼠标划过修改样式的方法
2015/04/14 Javascript
JavaScript中string对象
2015/06/12 Javascript
浅谈$(document)和$(window)的区别
2015/07/15 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
2015/09/04 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
2019/03/04 Javascript
setTimeout与setInterval的区别浅析
2019/03/23 Javascript
详解Vue中的scoped及穿透方法
2019/04/18 Javascript
Js利用正则表达式去除字符串的中括号
2020/11/23 Javascript
Python实现1-9数组形成的结果为100的所有运算式的示例
2017/11/03 Python
浅谈Python对内存的使用(深浅拷贝)
2018/01/17 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
2018/05/25 Python
解决pycharm工程启动卡住没反应的问题
2019/01/19 Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
2019/10/24 Python
使用IDLE的Python shell窗口实例详解
2019/11/19 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
keras实现多种分类网络的方式
2020/06/11 Python
全球领先的鞋类零售商:The Walking Company
2016/07/21 全球购物
请说出这段代码执行后a和b的值分别是多少
2015/03/28 面试题
优秀毕业自我鉴定
2014/02/15 职场文书
解除劳动合同协议书范本
2014/04/14 职场文书
学生会竞选演讲稿
2014/04/24 职场文书
中国在我心中演讲稿
2014/09/13 职场文书
政府个人对照检查材料思想汇报
2014/10/08 职场文书
工作态度检讨书范文
2015/05/06 职场文书
入党积极分子培养人意见
2015/06/02 职场文书
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL