1. 組件的雙向綁定
- 組件外部用 v-model 綁定
- 組件內部用
value接收 - 組件內部監(jiān)聽
value和副本currentValue,在currentValue發(fā)生變化的時候廣播 input 事件,即可達到雙向綁定的效果
watch: {
value() {
this.currentValue = this.value
},
currentValue(val) {
this.$emit("input",val);
},
},
2. 在組件中監(jiān)聽 prop 失效
解決辦法:寫成下面這種形式,使用 immediate 屬性。
watch: {
loading: {
immediate: true,
handler(val){
if(val){
this.currentDisabled = true
}
},
},
},
原因:因為 watch 的一個特點是,最初綁定的時候是不會執(zhí)行的,當 loading 值改變時才進行監(jiān)聽計算。而immediate: true 代表如果在 wacth 里聲明了 loading 之后,就會立即先去執(zhí)行里面的 handler 方法,如果為 false就跟我們以前的效果一樣,不會在綁定的時候就執(zhí)行。