vue中.sync修饰符,实现子组件实时更新父组件的值


vue 修饰符sync的功能是:当一个子组件改变了一个 prop 的值时,这个变化也会同步到父组件中所绑定。

不过它有一个前身,先来看看.sync出现之前是如何实现的

父组件中(传递给子组件一个值:propObj)

<template>
  <div>
    <Lala :propObj="lalala" v-on:update:propObj="lalala = $event"
    ></Lala>
  </div>
  
</template>

<script>
import Lala from '@/components/lala.vue';

export default {
  components:{
    Lala
  },
  data(){
    return { lalala:{name:"哈哈"},
    }
  }
}
</script>

子组件中(点击事件去更新父组件的值)

<template>
    <div><el-button @click="dd()">自定义组件内的按钮</el-button>
    </div>
</template>

<script>
export default {
    props:['propObj'],//外部传值
    methods:{
        dd(){  
            if(this.propObj.name==2){
                this.propObj.name="哈哈";
                this.$emit('update:propObj', this.propObj)
            }else{
                this.propObj.name=2;
                this.$emit('update:propObj', this.propObj)
            }
            
        }
    }
}
</script>

下面用vue 修饰符sync来实现,会更简洁

父组件中

<template>
  <div>
    <Lala v-bind:propObj.sync="lalala"></Lala>
  </div>
  
</template>

<script>
import Lala from '@/components/lala.vue';

export default {
  components:{
    Lala
  },
  data(){
    return {
      lalala:{name:"哈哈"},
    }
  }
}
</script>

子组件中保持不变

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM