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>
子組件中保持不變