美文网首页
Vue 中的 sync 修饰符

Vue 中的 sync 修饰符

作者: 雪映月圆 | 来源:发表于2019-03-19 11:11 被阅读0次

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

    <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>
    

    相关文章

      网友评论

          本文标题:Vue 中的 sync 修饰符

          本文链接:https://www.haomeiwen.com/subject/uhqgmqtx.html