Vue的v-model是雙向綁定的一種方式,可以輕松地處理表單數(shù)據(jù)。v-model詳解如下:
//示例代碼:
//等價于
//示例代碼:
//等價于
第一個v-model綁定的是一個字符串,而第二個v-model則綁定的是一個數(shù)字。v-model將表單元素與Vue實例中的數(shù)據(jù)進行了雙向綁定。我們可以使用v-model來實現(xiàn)表單的輸入驗證、過濾、格式化等功能,非常方便。
v-model常用的修飾符有:.lazy、.number、.trim等。
//示例代碼:
這里會等到用戶停止輸入后才會同步 message2。自動過濾掉首尾空白字符將輸入轉化為 number 類型
v-model可以支持自定義組件的雙向綁定,但需要在組件中實現(xiàn)model選項,用來指定雙向綁定的屬性和事件。
//示例代碼:
Vue.component('my-component', { props: ['value'], template: `` })
在自定義組件中,v-model默認會利用名為 value 的 prop 和名為 input 的事件,例如:
//示例代碼:
相當于:
//示例代碼:
{ message = val }">
當我們使用自定義組件時,如果在組件的內(nèi)部使用v-model,Vue會自動幫我們綁定value和input事件。
//示例代碼:
Vue.component('my-component', { model: { prop: 'checked', event: 'change' }, props: { checked: Boolean }, template: `` })
在這個自定義組件內(nèi),使用 model 選項,把 checked 作為 prop 名和 change 作為事件名,這樣父組件中用v-model就可以雙向綁定了。
//示例代碼:
總結:
v-model是Vue的核心特性之一,可以快速便捷的實現(xiàn)表單數(shù)據(jù)的雙向綁定,同時還可以通過修飾符等擴展其功能。當我們面對自定義組件時,v-model同樣也可以實現(xiàn)雙向綁定,但需要注意model選項的使用。