vue中存在幾個(gè)規(guī)則:
- 組件不可以修改prop外部數(shù)據(jù)
-
$emit可以觸發(fā)事件,并傳參 -
$event可以獲取$emit的參數(shù)
什么意思呢,意思就是當(dāng)把數(shù)據(jù)傳給一個(gè)子組件,這個(gè)組件不能直接修改這個(gè)數(shù)據(jù),而是需要通過$emit來觸發(fā)一個(gè)事件并通知到父組件,父組件通過$event來獲取參數(shù)的值。
代碼如下:
<button @click="$emit('update', n-100)"/>//子組件傳參
<Child :n="total" v-on:update ="total = $event"/>//父組件監(jiān)聽并獲取參數(shù)
父組件的這段代碼可以改用.sync修飾符
<Child :n.sync="total" />
總結(jié):
vue 修飾符sync的功能是::n.sync="total" 當(dāng)一個(gè)子組件改變了一個(gè) prop 的值時(shí),這個(gè)變化也會(huì)同步到父組件中所綁定。他等價(jià)于父組件監(jiān)聽并獲取參數(shù):n="total" v-on:update ="total = $event",就是一種語法糖