Vue 中的 sync 修饰符

子组件修改父组件中的某个属性值,正常写法

<body>
    <div id="app">
        <child :msg="msg" @change="doChange"></child>
    </div>

    <script src="./js/vue.js"></script>
    <script>

        // 子组件的配置对象
        const child = {
        template: `
                <div>
                    <h1>{{msg}}</h1>
                    <button @click="change">点击修改h1的内容</button>
                </div>
            `,
        props: {
            msg: String
        },
        methods: {
            change: function() {
            this.$emit("change", "这是被子组件修改后的内容");
            }
        }
        };

        // 注册子组件
        Vue.component("child", child);

        const vm = new Vue({
        el: "#app",
        data: {
            msg: "这是父组件中的数据"
        },
        methods: {
            doChange: function(data) {
            this.msg = data;
            }
        }
        });
    </script>
</body>

使用sync修饰符的写法

操作步骤:

  1. 子组件中: this.$emit("update:msg", params); //此处触发的事件名称必须是 "update:变量名"
  2. 在父组件的组件模板中,找到对应的子组件标签,把其中的 :msg="msg" 改写为 :msg.sync="msg"
  3. 注意: 此处的 "update:msg
<body>
    <div id="app">
        <child :msg.sync="msg"></child>
    </div>

    <script src="./js/vue.js"></script>
    <script>

        // 子组件的配置对象
        const child = {
        template: `
                <div>
                    <h1>{{msg}}</h1>
                    <button @click="change">点击修改h1的内容</button>
                </div>
            `,
        props: {
            msg: String
        },
        methods: {
            change: function() {
            this.$emit("update:msg", "这是被子组件修改后的内容");
            }
        }
        };

        // 注册子组件
        Vue.component("child", child);

        const vm = new Vue({
        el: "#app",
        data: {
            msg: "这是父组件中的数据"
        }
        });
    </script>
</body>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。