Vue.js自定義事件的表單輸入組件方法
自定義事件可以用來創(chuàng)建自定義的表單輸入組件,使用 v-model 來進行數(shù)據(jù)雙向綁定。要牢記:
<input v-model="something">
這不過是以下示例的語法糖:
<input v-bind:value="something" v-on:input="something = $event.target.value">
所以在組件中使用時,它相當于下面的簡寫:
<custom-input v-bind:value="something" v-on:input="something = arguments[0]"> </custom-input>
所以要讓組件的 v-model 生效,它應該 (從 2.2.0 起是可配置的):
接受一個 value prop
在有新的值時觸發(fā) input 事件并將新值作為參數(shù)
我們來看一個非常簡單的貨幣輸入的自定義控件:--在父組件中引用子組件模板時用綁定v-model數(shù)據(jù):
<currency-input v-model="price"></currency-input>
Vue.component('currency-input', { template: '\ <span>\ $\ <input\ ref="input"\ v-bind:value="value"\ v-on:input="updateValue($event.target.value)"\ >\ </span>\ ', props: ['value'], methods: { // 不是直接更新值,而是使用此方法來對輸入值進行格式化和位數(shù)限制 updateValue: function (value) { var formattedValue = value // 刪除兩側(cè)的空格符 .trim() // 保留 2 位小數(shù) .slice( 0, value.indexOf('.') === -1 ? value.length : value.indexOf('.') + 3 ) // 如果值尚不合規(guī),則手動覆蓋為合規(guī)的值 if (formattedValue !== value) { this.$refs.input.value = formattedValue } // 通過 input 事件帶出數(shù)值 this.$emit('input', Number(formattedValue)) } } })
自定義組件的 v-model
2.2.0 新增
默認情況下,一個組件的 v-model 會使用 value prop 和 input 事件。但是諸如單選框、復選框之類的輸入類型可能把 value 用作了別的目的。model 選項可以避免這樣的沖突:
Vue.component('my-checkbox', { model: { prop: 'checked', event: 'change' }, props: { checked: Boolean, // 這樣就允許拿 `value` 這個 prop 做其它事了 value: String }, // ... })
<my-checkbox v-model="foo" value="some value"></my-checkbox>
上述代碼等價于:
<my-checkbox :checked="foo" @change="val => { foo = val }" value="some value"> </my-checkbox>
注意你仍然需要顯式聲明 checked 這個 prop。
以上這篇Vue.js自定義事件的表單輸入組件方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue前端el-input輸入限制輸入位數(shù)及輸入規(guī)則
這篇文章主要給大家介紹了關于vue前端el-input輸入限制輸入位數(shù)及輸入規(guī)則的相關資料,文中通過代碼介紹的介紹的非常詳細,對大家學習或者使用vue具有一定的參考借鑒價值,需要的朋友可以參考下2023-09-09vue 循環(huán)加載數(shù)據(jù)并獲取第一條記錄的方法
今天小編就為大家分享一篇vue 循環(huán)加載數(shù)據(jù)并獲取第一條記錄的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09vue+element-ui+axios實現(xiàn)圖片上傳
這篇文章主要為大家詳細介紹了vue+element-ui+axios實現(xiàn)圖片上傳,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08elementui時間/日期選擇器選擇禁用當前之前(之后)時間代碼實例
當我們在進行網(wǎng)頁開發(fā)時,通常需要用到一些日期組件來方便用戶選擇時間,其中element日期組件是一個非常好用的工具,這篇文章主要給大家介紹了關于elementui時間/日期選擇器選擇禁用當前之前(之后)時間的相關資料,需要的朋友可以參考下2024-02-02基于vue-cli3多頁面開發(fā)apicloud應用的教程詳解
這篇文章主要介紹了基于vue-cli3多頁面開發(fā)apicloud應用,本文采用vue-cli+APIcloud的方式寫解決以上痛點,開發(fā)靈活,并且打包之后體積更小速度更快,需要的朋友可以參考下2019-06-06