一、父子元件間-自定義事件
子元件用$emit()
來觸發事件,父元件用$on
來監聽子元件的事件。
//父元件**
//父元件函式**
handlegettotal:function(total)
//子元件**
+1//子元件函式**
handleincrease:function()
二、父子元件間-使用v-model
在自定義元件上使用v-model實現雙向繫結。$emit()的事件名是特殊的"input"。
//父元件
-1//父元件函式
handlereduce:function()
//子元件
vue.component('my-component',
}});
父元件通過v-model將total值傳入子元件,子元件通過props中的value接收total值並通過v-bind顯示在input元素中;子元件自定義input事件,將在input元素中輸入的值通過$emit()傳遞給父元件的total。
三、任意元件間-**事件匯流排(bus)
任意元件(包括父子、兄弟、跨級)間的通訊推薦使用乙個空的vue例項作為**事件匯流排(bus),也就是乙個中介。
//html
//js
var bus=new vue();//定義乙個空vue例項作為**事件匯流排
vue.component('component-a',
}}); data:,
mounted:function())
}});
子元件通過$emit()
給bus空例項新增了乙個on-message自定義事件,父元件通過bus.$on()
監聽這個on-message事件。
四、祖孫元件間-父鏈
在子元件中使用this.$parent
可以直接訪問該元件的父例項或元件,父元件也可以通過this.$children
訪問它所有的子元件,而且可以遞迴向上或向下無限訪問,直到根例項或最內層的元件。
//html
//js
vue.component('component-a',
}}); data:
});
注意,在業務中子元件應盡量避免依賴父元件的資料,更不該主動修改它的資料,因為這樣使得父子元件緊耦合。父子元件最好還是通過props和$emit()
來通訊。
五、父子元件間-子元件索引
當子元件較多時,可以使用子元件索引的方法,即用特殊的屬性ref來為子元件指定乙個索引名稱。
在父元件模板中,子元件標籤上使用ref指定乙個名稱,並在父元件內通過this.$refs
來訪問指定名稱的子元件。
//html
通過ref獲取子元件例項
//js
vue.component('component-a',
}}); data:,
methods:
}});
注意,$refs
只在元件渲染完成後才填充,並且它是非響應式的。它僅僅作為乙個直接訪問子元件的應急方案,應當避免在木板或計算屬性中使用它。
——閱讀《vue.js實戰》第7章
Vue 元件通訊
單層元件通訊 prop 元件例項的作用域是孤立的。這意味著不能 也不應該 在子元件的模板內直接引用父元件 的資料。父元件的資料需要通過 prop 才能下發到子元件中。子元件要顯式地用 props 選項宣告它預期的資料 vue.component child 然後給他傳乙個訊息 message hel...
vue元件通訊
這部分vue文件已經說的很清楚了,但是為了更好的理解,自己再整理一遍。首先,父元件的與子元件的通訊是通過子元件的props。那麼子元件有資料變化時,想要通知父元件應該怎麼辦呢?父元件可以在使用子元件的地方直接用 v on 來監聽子元件觸發的事件。簡單來說,就是子元件監聽的事件,在函式內使用 emit...
Vue元件通訊
父子級通訊推薦使用 props emit parent children refs attrs listeners 子元件使用props 接收父元件傳遞的值 父元件向子元件傳值 子元件通過 emit 讓父元件接收事件,改變父元件的data裡面的值 子元件向父元件傳值 父元件 子元件 這裡的props...