對于單選按鈕,勾選框及選擇列表選項, v-model 綁定的 value 通常是靜態字符串(對于勾選框是邏輯值):
<!-- 當選中時,`picked` 為字符串 "a" --><input type="radio" v-model="picked" value="a"><!-- `toggle` 為 true 或 false --><input type="checkbox" v-model="toggle"><!-- 當選中時,`selected` 為字符串 "abc" --><select v-model="selected"> <option value="abc">ABC</option></select>
但是有時我們想綁定 value 到 Vue 實例的一個動態屬性上,這時可以用 v-bind 實現,并且這個屬性的值可以不是字符串。
舉個最容易認知的例子
<input type="radio" v-model="pick" v-bind:value="a">//當只有v-model的情況下,我們綁定了VUE實例中的pick這個數據,而這數據往往都是字符串或者是邏輯值,而如今通過v-bind綁定value,意味著,value是一個可變的數據 a,而不是字符串'a',而v-model在這個控件選定后的值就是指向value,而用v-bind綁定后,指向的值又是一個動態屬性,所以此時就可以通過a這個動態屬性來更改v-model綁定的值,其他的控件也是如此,比如select等// 當選中時vm.pick === vm.a
.lazy
在默認情況下, v-model 在 input 事件中同步輸入框的值與數據 (除了 上述 IME 部分),但你可以添加一個修飾符 lazy ,從而轉變為在 change 事件中同步:
//測試是在失去焦點的時候才更新,而不是實時更新
<input v-model.lazy="msg" >
.number
如果想自動將用戶的輸入值轉為 Number 類型(如果原值的轉換結果為 NaN 則返回原值),可以添加一個修飾符 number 給 v-model 來處理輸入值:
<input v-model.number="age" type="number">{{typeof age}}//如果輸入的是字符串則是string,如果是數字字符串則轉換成number
這通常很有用,因為在 type=”number” 時 HTML 中輸入的值也總是會返回字符串類型。
.trim
如果要自動過濾用戶輸入的首尾空格,可以添加 trim 修飾符到 v-model 上過濾輸入:
<input v-model.trim="msg">
以上所述是小編給大家介紹的Vue input控件通過value綁定動態屬性及修飾符的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
新聞熱點
疑難解答