v-model中如何使用過濾器
v-model中使用過濾器
v-model不能使用過濾器(filter)的替代或者解決方法;
如圖:
頁面中有v-model需要在輸入時驗(yàn)證格式的時候(<input v-model='price' />)
官方給出的方法是使用computed,但是多個框時computed不能很好的復(fù)用;
使用input事件,通過傳值驗(yàn)證輸入框中的內(nèi)容,
直接上代碼:
<input v-model="price" @input="priceFormat('price',price)"/> data(){ return { price:'',//價錢 } }, methods: { /*價格過濾 *data:對應(yīng)data中的名稱,是字符串,val:對應(yīng)data中的值 */ priceFormat(data,val){ if(!/^\d*?\.?\d*?$/.test(val)){ this[data]='';//修改data中的價錢為空 } } }
v-model或者v-text中使用過濾器進(jìn)行脫敏不生效問題
vue.js允許我們自定義過濾器,可以用來處理一些常用的文本格式化,但是過濾器只能用在兩個地方,雙括弧插值({{}})和v-bind 表達(dá)式(后者聰vue2.1.0+才開始支持),并且filter應(yīng)該被定義在js表達(dá)式的尾部,通常放在vue框架的methods下面;
但是有時候我們需要在v-model/v-text中使用脫敏,這里分別提供兩種方法:
1.使用v-model進(jìn)行過濾器脫敏
<template> <div id="app"> <input type="text" v-model="userDate" /> <span>{{ userDate | dateFormat }}</span> </div> </template>
其中,v-model用來進(jìn)行雙向綁定,下面的雙括弧用來進(jìn)行脫敏顯示;
2.手動將關(guān)鍵部位進(jìn)行截取加*脫敏
<div class="cuzu" v-show="cuzu"> <div class="formName formSlect"> <h1>出租人姓名</h1> <input type="text" id="lessorName" v-model="Tname" disabled="disabled"> <div class="clearFix"></div> </div> <div class="formName formSlect"> <h1>出租人證件號</h1> <input type="text" id="lessorCode" v-model="Tidcard" disabled="disabled"> <div class="clearFix"></div> </div> </div>
//這里用來傳遞實(shí)參運(yùn)算 _this.name = res.userdetail.name; _this.idcard = res.userdetail.papersnumber; //身份證脫敏處理 info.Tidcard = res.userdetail.papersnumber.substring(0, 1) + "****************" + res.userdetail.papersnumber.substring(17, 18); //姓名脫敏處理 info.Tname = "*" + res.userdetail.name.slice(1);
這里v-model拿到后臺截取加*后的參數(shù)進(jìn)行脫敏展示。
獲取到用戶信息后對名字(2/3/4個字)進(jìn)行脫敏
_this.name = res.userdetail.name; if (_this.name.length == 2) { _this.yhmc = _this.name.slice(0, 1) + "*"; } else if (_this.name.length == 3) { _this.yhmc = _this.name.slice(0, 1) + "**"; } else { _this.yhmc = _this.name.slice(0, 1) + "***"; }
3.定義一個方法進(jìn)行脫敏處理
changeCardid: function (value) { if (!value) return '' //return value.replace(/(\w{3})\w*(\w{4})/, '$1******$2') return value.replace(/(\w{1})\w*(\w{1})/, '$1****************$2') }, changeName: function (value) { if (!value) return '' else { if (value.length == 3) { return value.substr(0, 1) + "**" } else if (value.length == 2) { return value.substr(0, 1) + "*" } else { return value.substr(0, 1) + "***" } } }
然后在v-model中直接調(diào)用我們聲明的脫敏方法,changeName(name)
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue template中slot-scope/scope的使用方法
今天小編就為大家分享一篇vue template中slot-scope/scope的使用方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-09-09使用live-server快速搭建本地服務(wù)器+自動刷新的方法
下面小編就為大家分享一篇使用live-server快速搭建本地服務(wù)器+自動刷新的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03Vue-CLI 3.X 部署項(xiàng)目至生產(chǎn)服務(wù)器的方法
這篇文章主要介紹了Vue-CLI 3.X 部署項(xiàng)目至生產(chǎn)服務(wù)器的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03Vue+Element UI 實(shí)現(xiàn)視頻上傳功能
這篇文章主要介紹了Vue+Element UI 實(shí)現(xiàn)視頻上傳功能,前臺使用Vue+Element UI中的el-upload組件實(shí)現(xiàn)視頻上傳及進(jìn)度條展示,后臺提供視頻上傳API并返回URL,具體實(shí)現(xiàn)代碼及效果展示跟隨小編一起看看吧2022-01-01解決$store.getters調(diào)用不執(zhí)行的問題
今天小編就為大家分享一篇解決$store.getters調(diào)用不執(zhí)行的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11