[Vue] - (九)自訂事件 Custom Events-實作
本篇主要是透過線上課程:HiSKIO
、及網路上搜尋資源所學習的。
實作-鄉鎮市區下拉選單
分為兩個下拉選單,第一個下拉選單是選擇縣市,第二個選單則是區域。
選擇後要顯示選擇到的縣市跟區域並帶有郵遞區號。
組件命名,如果是用 template ,不是用 html 的話,是不限於大小寫限制的。
用 select 來選擇,Vue 實例中的 template 模板直接用大寫組件名稱Select
。
V-model 綁定 cityIndex (等於 select 中的 value ,所以在下層Select
組件中 props 有一個 value 以已經綁定這個值), v-bind 綁定 options=”cities”,這裡的 cities 是 data 中的 cities ,這邊用 computed 來計算並回傳宣告的 cities 物件。
下層 Select 組件中,要有 props 的屬性 value 跟 options 以外, template 中 select v-model 這邊如果是綁定 value 的話,是無法透過 select 後把 value 傳到上層,需要透過 computed 來計算 並用 set 來發出 $emit 事件。
- 組件的 v-model 不能修改 this 的 props (但可以透過 computed 來計算)
computed 用物件表達並用 index 命名後,用 get 取得目前 value , set 則把目前值用 $emit(‘input’) 的上層去。
上層則是 v-model 的 cityIndex 接收到值。
再來在上層 template 新增一組區域的 Select ,並在 computed 中去執行 areas 的計算獲取宣告的陣列中的區域, zip 則是獲取郵遞區號。
這邊會遇到如果切換的時候,不同 city 在切換時,會因為有不同 index 的 area 導致可能會顯示異常,這邊會用 watch 來偵聽,一旦 cityIndex 切換的時候就把 areaIndex 歸零。
1 | <div id="app"></div> |