vue修饰符sync

1.sync介绍:vue是单向数据流,也就意味着子组件是无法修改父组件传过来的参数,只能通过自定义事件通知父组件去修改,sync解决了这个问题,单其实sync并没有改变单向数据流,只是简化了步骤,其实就是一个语法糖

// 子组件

<template>

    <div>{{ value }}</div>

    <button @click="fn">改变value的值</button>

</template>

<script>
export default {

   name: 'DongDialog',

   props: {

        value: {
            
            type: String

            default: '你好sync'
        }
   },

    methods: {

        fn () {

           // 如果点击按钮修改父组件传过来的value值的话会报错
        
            this.value = '你好美女'    // 报错

            // 使用sync的语法糖来解决

            /*

                注意update冒号后面的对应值必须是父组件穿归来的数据

                第二个参数是需要修改的值
            */
            this.$emit('update:value', '我去天气好热')"
        }
    }
}
</script>    



// 父组件

<template>
    
    <!--注意父组件要加上sync修饰符-->
    <dialog :value.sync="value"></dialog>  

</template>

<script>
import dialog from '../../components/Dialog'
export default {

    name: 'parent',

    data () {
    
        return {

            value: '漂亮的大美女'
        }
    },

    components: {

        dialog 
    }
}
</script>