Vue学习笔记(九)——sync修饰符

参考文档:https://cn.vuejs.org/v2/guide/

sync修饰符用于简化子组件通知父元素更新传入参数这个动作的代码逻辑,可以参考如下示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>sync修饰符</title>
    <script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
</head>
<body>
<div id="app">
    <!-- 绑定单个属性 -->
    <my-com-a :title.sync="title"></my-com-a>
    <!-- 上下是等价的,但上面的写法更简洁 -->
    <!--<my-com-a :title="title" @update:title="title = $event"></my-com-a>-->

    <!-- 绑定对象 -->
    <my-com-b v-bind.sync="obj"></my-com-b>
    <!-- 上下是等价的,但上面的写法更简洁 -->
    <!--<my-com-b :objkey="obj.objkey" @update:objkey="obj.objkey = $event"-->
              <!--:objvalue="obj.objvalue" @update:objvalue="obj.objvalue = $event"></my-com-b>-->
</div>
<script>
    Vue.component('my-com-a', {
        template: '<div><span @click="changeA">{{title}}</span></div>',
        props: ['title'],
        methods: {
            changeA: function () {
                this.$emit("update:title", "it is new title by my-com-a.");
            }
        }
    });
    Vue.component('my-com-b', {
        template: '<div><span @click="changeB">{{objkey}}---{{objvalue}}</span></div>',
        props: ['objkey', 'objvalue'],
        methods: {
            changeB: function () {
                this.$emit("update:objkey", "it is new key by my-com-b.");
            }
        }
    });
    new Vue({
        el: '#app',
        data: {
            title: "it is title.",
            obj: {
                objkey: "it is key.",
                objvalue: "it is value."
            },
            objkey: "it is key.",
            objvalue: "it is value.",
        },
        computed: {
            //如果是计算属性则无效
            // obj: function () {
            //     return {
            //         objkey: this.objkey,
            //         objvalue: this.objvalue
            //     }
            // }
        }
    });
</script>
</body>
</html>

可以看到使用sync修饰符后可以达到相同的效果:
在这里插入图片描述

注意点:

1.子组件通知父元素更新参数时必须带上“update:”,这在简写以后很容易被忽略;

2.当绑定的是对象时,这个对象不能是计算属性(计算属性无效,因为计算属性的依赖信息并没有被修改)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值