vue父子组件传值,实现深度监听对象,双向绑定

本文介绍如何在Vue中实现父子组件间的值传递,并通过深度监听对象实现双向绑定。通过获取数据并传递给子组件,再利用$emit触发父组件事件更新数据,达到子组件对象属性变化时同步父组件的效果。
摘要由CSDN通过智能技术生成

实现原理:首先获取数据,然后传递给子组件,然后通过$emit函数触发父组件事件,更新父组件的数据,那么传递给子组件的数据也就更新了,在实现子组件更新数据的时候,传递过来的是一个对象,那么我们就需要深度监听对象。实现双向绑定。

1,获取数据传递给子组件

<template>
    <div class="upload">
        <v-header></v-header>
        <div class="upload-content">
            <infor :data="data" @handleOn="handleOn" @handleChildClass="handleChildClass"></infor>
            <!-- <upload-img :data="data" @handleOn="handleOn" :liveClass="liveClass" :color="color"></upload-img>
            <editor :data="data" @handleOn="handleOn"></editor>
            <live-time :data="data" @handleOn="handleOn"></live-time>
            <submit :data="data" @handleOn="handleOn"></submit> -->
        </div>
    </div>
</template>
<script>
    import VHeader from '@/components/header.vue'
    import infor from '@/components/liveDetail/videoInfor.vue'
    import UploadImg from '@/components/liveDetail/uploadimg.vue'
    import submit from '@/components/liveDetail/submit.vue'
    import LiveTime from '@/components/liveDetail/liveTime.vue'
    import editor from '@/components/liveDetail/editor.vue'
    export default {
        data(){
            return {
              data:JSON.parse(window.localStorage.getItem('data')) || {},
              liveClass: [],
              color:[]
            }
        },
        components: {

            VHeader,
            infor,
            UploadImg,
            submit,
            editor,
            LiveTime

        },
        methods:{
            //传递事件给子组件
            handleOn(data){
                this.data[data.key] = data.val
                window.localStorage.setItem("data",JSON.stringify(this.data))
            },
            //子组件传递给父组件liveClass
            handleChildClass (data) {
              this[data.key] = data.val
            }
        }
    }
</script>
<style scoped>
.upload-content{
    width: 100%;
    background: #f4f4f4;
    padding-top: 50px;
}
</style>
2,子组件通过深度监听父组件的数据,实现双向绑定
<template>
    <div class="infor">

        <h2>直播信息<span class=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值