不少時候,咱們會對 prop (父子組件傳遞數據的屬性) 進行「雙向綁定」vue
在vue 1.x 中的 .sync 修飾符所提供的功能。當一個子組件改變了一個帶 .sync 的prop的值時,這個變化也會同步到父組件中所綁定的值。this
這很方便,但也會致使問題,由於它破壞了單向數據流。(數據自上而下流,事件自下而上走)debug
因爲子組件改變 prop 的代碼和普通的狀體改動代碼毫無區別,因此當你光看子組件的代碼時,你徹底不知道它合適悄悄地改變了父組件的狀態。雙向綁定
這在 debug 複雜結構的應用時會帶來很高的維護成本。因而咱們在 vue 2.0 中移除了 .sync 。事件
咱們須要作的只是 讓子組件改變父組件狀態的代碼更容易被區分。同步
因而從 vue 2.3.0 開始,咱們從新引入了 .sync 修飾符,可是此次它只是做爲一個編譯時的語法糖存在。他會被自動擴展爲一個 自動更新父組件屬性的 v-on 監聽器。it
<child :foo.sync=」msg」></child> 就會被擴展爲: <child :foo=」bar」 @update:foo=」val => bar = val」> (@是v-on的簡寫)編譯
當子組件須要更新 foo 的值的時候,他須要顯示的觸發一個更新事件: this.$emit( 「update:foo」, newValue );擴展