美文网首页
Vue笔记——父子组件的双向数据绑定

Vue笔记——父子组件的双向数据绑定

作者: 振礼硕晨 | 来源:发表于2018-10-12 09:22 被阅读0次

Vue项目中经常使用到组件之间的数值传递,实现的方法很多,但是原理基本上大同小异。
子组件向父组件出传递数据,使用自定义事件的方式。
父组件向子组件传递数据,使用props属性的方式。

一、实现思路

之前写过两篇文章,分别介绍了父子组件之前如何单向传递数据,如果你对单向传递数据不熟悉,可以参考着两篇文章:

如果我们明确了如何在父子组件之间单向传递数据,那么在这个基础之上,我们就可以实现数据的双向绑定。

比如父组件向子组件传递了一个数据,子组件接收到这个数据之后,保存到自己的变量中。如果子组件中修改了这个变量,再通过触发自定义事件,将这个数据传递给父组件。父组件接收到这个数据之后,保存到自己对应的变量中。

这样就实现父子组件的双向数据绑定,如果父组件中改变了这个数据,那么子组件中会实时修改对应的数据;如果子组件中改变了这个数据,父组件中也会实时修改对应的数据。

二、具体实现

1.子组件代码:

<template>
  <div class="Child">
    <h1>{{ val }}</h1>
    <!-- 子组件中可以修改value数值 -->
    子组件:<input type="text" v-model="value">
  </div>
</template>

<script>
  export default {
    name: 'Child',
    // 在props属性里接收父组件传递过来的数据
    props: ["val"],
    data: function () {
      return {
        value: this.val    // 接收父组件传递过来的数据,保存到变量中
      }
    },
    // 一旦value数值发生改变,子组件触发自定义事件changeValue,将数据传递到父组件
    watch: {
      value: function () {
        console.log(666);
        this.$emit('changeValue', this.value)
      }
    }
  }
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>

</style>

2.父组件代码:

<template>
  <div id="app">
    <!-- 使用v-bind命令将父组件中的数据绑定到子组件上 -->
    <Child v-bind:val="value" v-on:changeValue="receiveValue"></Child>
    <!-- 父组件数据绑定,可以修改value的数值 -->
    父组件:<input type="text" v-model="value">
  </div>
</template>

<script>
  import Child from './components/Child.vue'

  export default {
    name: 'App',
    components: {
      Child
    },
    data: function () {
      return {
        value: "初始化数据",
      }
    },
    methods:{
      // 子组件触发changeValue事件,调用此方法,将子组件中的数据传递到父组件中
      receiveValue:function(receive){
        this.value = receive;
      }
    }
  }
</script>

<style>

</style>

相关文章

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

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

  • Vue sync实现 子组件属性与父组件变量双向绑定

    Vue sync实现 子组件属性与父组件变量双向绑定 父子组件双向绑定语法 父组件可以监听update:title...

  • Vue之表单双向数据绑定和组件

    三、表单双向数据绑定和组件 目录:双向数据绑定、组件 1.双向数据绑定 1)什么是双向数据绑定Vue.js是一个M...

  • Vue重要知识小结

    vue sync修饰(1)双向数据绑定,父子组件之间信息的交互1⃣️在自组件中使用this.emmit('toFa...

  • Vue笔记——父子组件的双向数据绑定

    Vue项目中经常使用到组件之间的数值传递,实现的方法很多,但是原理基本上大同小异。子组件向父组件出传递数据,使用自...

  • 前端面试题:VUE

    1. vue的双向数据绑定实现原理? 2. vue如何在组件之间进行传值? 3. vuex和vue的双向数据绑定...

  • vue

    1、vue的双向数据绑定实现原理 2、vue如何在组件之间进行传值 3、vuex和vue的双向数据绑定有什么冲突 ...

  • vue常见面试题

    双向数据绑定的原理: vue父组件向子组件传值(属性绑定):传递数据(props): 传递方法(this.$emi...

  • 使用v-model对父子组件进行双向绑定

    在vue中,通常父子组件通信,我们使用的是props,但是有的场景,我们需要对父子组件进行双向绑定。这时我们会用到...

  • vue2父子组件通信

    前言 因为vue2去除了父子组件的双向数据绑定,所以在子组件是不允许修改父组件的属性的,控制台会报如下错误: 解决...

网友评论

      本文标题:Vue笔记——父子组件的双向数据绑定

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