vue的sync修饰符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue的sync修饰符相关的知识,希望对你有一定的参考价值。

参考技术A

1、由于vue2xx父子组件传递数据是单向传递

2、子组件不能修改props中父组件传递的数据

3、为了能修改父组件的数据,一般用用事件的方式,如this.$emit(\'update:xxx\',yyy),(其中xxx就是props中定义的属性,yyy为修改的值),然后父组件定义子组件的事件@update:xxx="func",在func中修改父组件要传递给子组件的数据

4、而vue的sync修饰符,它省略了父组件的事件的注册,能使子组件修改props的属性,其实它是一个语法糖,本质上没有改变父子组件数据单向传递

5、举例:

定义子组件son.vue的内容:

定义父组件father.vue的内容:

6、说明:

从父组件的文本框中输入数据,子组件的的msg和文本框跟着变化,而从子组件的

文本框输入数据,同样父组件也变化

7、结论:

vue的sync只是帮助使用者省略事件的注册,是一个语法糖,并不改变父子数据流向

vue2.0修饰符sync用法

如果子组件是一个弹窗,我们想通过点击关闭按钮来关闭子组件弹窗,子组件弹窗的v-show由变量isVisible控制,这个变量通过props由父组件来注入,

而子组件无法改变props里面的变量的值,但可以通过sync修饰来实现,代码如下:

子组件:

<button @click="close">关闭</button>

 

    export default {
        props: {
            isVisible: {
                type: Boolean,
                default: false
            }
        },
        methods: {
            close () {
                this.$emit(‘update:isVisible‘, false);
            }
        }
    };

父组件:

<chlid-component :isVisible.sync="isVisible"></chlid-component>

 

以上是关于vue的sync修饰符的主要内容,如果未能解决你的问题,请参考以下文章

浅析Vue中的 .sync 修饰符

如何理解Vue的.sync修饰符的使用

Vue的修饰符 .sync

vue修饰符sync

Vue .sync修饰符@click.stop与@click.prevent

Vue2 .sync修饰符的应用