美文网首页
Vue - 父子组件之间的传值

Vue - 父子组件之间的传值

作者: Welkin_qing | 来源:发表于2018-08-10 18:54 被阅读19次

一、通过对象字面量的形式,定义一个组件模板对象

首先创建组件,同时为这个组件起一个名称,并且利用标签形式,在页面中直接引入这个组件,同时还要在父组件中声明定义。

//这个是vue模板
<div id="app">
      <com1></com1>
  </div>
//这个是组件模板
  <template id="tmp1">
      <div>   //指定的唯一的根容器
          <h1>这是子组件</h1>
      </div>
  </template>

注意:通过一个指定的id "tmp1"来表示要去加载这个指定id的tmplate元素中的内容,用来当做组件的html结构。

<script>
    var com1 = {
        template: '#tmp1',  //子组件的名称
    }
    // 创建 Vue 实例,得到 ViewModel
    var vm = new Vue({
      el: '#app',   //vue的名称
      data: {},
      methods: { },
      components: {   //通过私有创建的方式在父组件中声明
          com1
      }
    });

  </script>

结果:


定义子组件

二、父组件向子组件传值

注意:子组件默认无法访问到父组件中的data的数据和methods中的方法
解决:父组件可以在引用子组件的时候,通过属性绑定的形式(v-bind),把需要传递给子组件的数据,以属性绑定的形式传递到子组件内部,供子组件使用。

1.先在父组件中定义要传输的值

我们在此时设置了一个msg

var vm = new Vue({
      el: '#app',
      data: {
          msg: '这是父组件中的值',
      },
      methods: { },
      components: {
          com1
      }
    });

2.在父组件中绑定

注意1:把父组件传递过来的msg属性,现在props数组中定义一下,才能使用。
在此我们定义为parentmsg

    var com1 = {
        template: '#tmp1',
        props: ['parentmsg'],//只读
    }
  <div id="app">
      <com1 v-bind:parentmsg="msg"></com1>
  </div>

注意2:组件中props所有的数据都是由父组件传递给子组件的
结果:

传递父组件的值

三、子组件通过事件调用向父组件传值

1.先在子组件中定义数据

 var com1 = {
        template: '#tmp1',
        props: ['parentmsg'],
        data(){
            return{
                msg: '我是子组件里的值'
            }
        },
    }

2.在子组件中绑定方法

  <template id="tmp1">
      <div>
          <h1>这是子元素------{{parentmsg}}</h1>
          <input value="向父组件中传递消息" type="button" @click="sendMsg">
      </div>
  </template>

3.在子组件中定义方法,通过emit

    var com1 = {
        template: '#tmp1',
        props: ['parentmsg'],
        data(){
            return{
                msg: '我是子组件里的值'
            }
        },
        methods: {
            sendMsg(){
                this.$emit('func', this.msg)
            }
        }
    }

4.在父组件中定义方法

  <div id="app">
      <com1 v-bind:parentmsg="msg" @func="msgFormson"></com1>
  </div>

5.在父组件的实例中编写方法

在此定义了一个变量用来接收子组件中的值

var vm = new Vue({
      el: '#app',
      data: {
          msg: '这是父组件中的值',
          msgformson: ''
      },
      methods: {
          msgFormson(data) {
              this.msgformson = data
              console.log(this.msgformson)
          }
      },
      components: {
          com1
      }
    });

结果:


最终结果

当点击button后,会将子组件里的值传递过来,按照父组件的方法输出到控制台里。

相关文章

  • 组件通信

    vue传值可分为父子之间传值、兄弟组件之间传值、跨代组件之间传值 1.父子之间传值:可以使用$emit/props...

  • Vue组件之间的传值

    Vue父子组件之间的传值(props)兄弟组件 VUEX

  • 前端基础搬运工-VUE模块

    十、VUE模块 基础部分 1. Vue组件间传值 答: -[ ] 1.父子之间的传值 父组件向子组件传值通过p...

  • (VUE3) 四、组件传值(父子组件传值 & 祖孙组件传值 &v

    1.父子组件传值 vue2中的父子组件传值:父组件: 子组件: vue3中的父子组件传值: 还是用props接收父...

  • vue3 - 父子组件之间的传值 2022-03-01

    近期学习 vue3 的父子组件之间的传值,发现跟 vue2.x的父子组件之间的传值 并没有太大的区别,我这边总结一...

  • Vue父子组件通信和双向绑定

    本篇文章主要介绍父子组件传值,组件的数据双向绑定。 1. 基础父子组件传值 父子组件传值,这是Vue组件传值最常见...

  • 组件之间的传值

    组件之间的传值,包括父子组件传值,兄弟组件之间的传值,其中父子组件包括父组件向子组件传值和子组件向父组件传值,现在...

  • 与Vue.js的第八天

    今天学习了Vue组件中的非父子之间的传值和生命周期Vue组件之间的传值分三种1.父传子之间传值用属性:props2...

  • vue 6种通信总结①

    常用vue通信大概有这几种方式进行: 组件间的父子之间的传值 组件间的子父之间的传值 非组件间的组件间的传值(简称...

  • VUE组件(传值,生命周期)

    VUE生命周期 VUE子传父组件通信 VUE非父子组件传值

网友评论

      本文标题:Vue - 父子组件之间的传值

      本文链接:https://www.haomeiwen.com/subject/fkylbftx.html