使用 Vue 資料雙向綁定的特性,做表單資料的自動收集。
先去 codepen 看看:Vue.js Form Input Bindings 表單輸入綁定
通常在處理表單的時候,在填完表單時,通常以<from>
標籤內的action
屬性來傳送,但在 Vue 裡,可以先把<from>
的預設submit
動作取消,並以監聽的方式(v-on)處理:@submit.prevent(方法)
。當我們按下送出表單鍵時,就會去執行handleSubmit
這個方法,在方法裡在指定我們希望如何處理表單內的資料就可以了。
表單裡的標籤綁定
主要以v-model
來做資料的雙向綁定,達到自動收集填入資料的目的。
表單裡有單純的輸入(text/textarea)、單選項(radio)、複選項(checkbox)和選單(select),實例中我們必須先在data
裡初始化我們會用到的值,這些初始值則是對應到 HTML 表單標籤裡的value
,例如,如果我們希望預設的radio
選項是 female,在data
裡的sex
初始,給female
就可以了,以此類推。
需要注意的是,因為複選項(checkbox)是可以複選,所以必須是陣列格式,才能複選。
另外,在選單(select)的部分,可以在實例的data
中先把物件型態的陣列準備好,然後在 HTML 使用v-for
迴圈的方式讀取選單裡的選項。需要注意的是,通常在資料庫裡,我們需要的會是這些屬性的id
而非文字,所以物件型態的陣列可以給兩個屬性:city.name
和city.id
,找到id
就可找到對應的城市名。
而這個選單(select)的初始值,也就是v-model
綁定的cityId
,在實例的data
裡也須先初始化好。
如果我們希望使用者所輸入的資料是固定的某一資料型別,例如可以計算的number
,那麼我們也可以在 HTML 標籤的屬性上指定 v-model 的資料型別,確保同步時使用者更動回來的是數字。例如:
1 | <input v-model="productPrice" type="number" /> |
HTML 的部分:
1 | <div id="app"> |
Vue 實例的部分:
1 | const vm = new Vue({ |