種一棵樹最好的時間是十年前,其次是現在。--誰說的不重要。
在做表單時,我們經常會遇到各種input輸入框,例如在設計填寫個數時,要求輸入正整數。如果只是個別輸入框,那麼我們完全可以檢測input的keyup事件,在該事件裡對keyup事件進行操作即可
type="text" v-model="value"
@keyup="value = value.length === 1 ? value.replace(/[^1-9]/g, '') : value.replace(/\d/g, '')" />
複製**
如果存在大量的要求輸入正整數,那就不好玩了
粉墨登場!
首先看下最終結果:
type="text" v-model="value" v-int/>
複製**
確認過的眼神,簡單到只需要新增指令 v-int即可實現,是不是心動的感覺?
新建js檔案,**如下
2. 註冊自定義指令,在main.js檔案中引入檔案,並註冊(圖中標註兩行**即可)
3. 起飛,在需要的地方輸入框使用該指令即可輕鬆實現。
如果把自己常用的小技能都採用自定義的方式進行維護,那豈不是美滋滋。
用了一段時間後,發現乙個,input的值被修改了,但vue裡顯示的還是舊值(例如輸入字母時失去焦點,值竟然沒有發生改變),這是個嚴重的bug呀...於是花了一上午找原因...找到解決方法:
import vue from 'vue'
export default () => else
trigger(input, 'input')
}input.onblur = function (e) else
trigger(input, 'input')}}
})}/*********************************
** fn: trigger
** intro: 參考
** author: zyx
*********************************/
const trigger = (el, type) =>
複製**
到這裡bug已經修復了。 該bug解決方法參考自:github.com/vuejs/discu…
vue自定義指令實現v model
指令是vue中非常重要的內容,了解指令的用法可以更好的服務於業務場景,方便高效,本文主要介紹指令的基本概念和用法,簡單模擬v model實現的功能。除了內建指令,vue.js 也允許註冊自定義指令。自定義指令提供一種機制將資料的變化對映為 dom 行為。可以用vue.directive id,def...
Vue自定義指令
vue有很多內建的指令,比如說v on,v model,v clock等等,每乙個指令會完成一定的功能,但是這些內建的指令總會有些侷限性,要是能夠自定義指令就好了 vue的自定義指令分類 全域性指令和區域性指令 vue指令的定義和用法 以全域性指令為例 1.語法 vue.directive 指令id...
vue自定義指令
自定義指令主要有兩種方式。一是在元件裡以directives的選項來自定義指令的內容。這樣的自定義指令是區域性的自定義指令,只在當前的元件裡面才能使用。script export default directives arr arr.join el.style.csstext arr script ...