vue过滤器的作用与学习方法
Vue杩囨护鍣紙Vue Filters锛変富瑕佺敤浜?銆?strong>鏍煎紡鍖栨暟鎹?/strong>锛?銆?strong>澧炲己鏁版嵁灞曠ず锛?銆?strong>绠€鍖栨ā鏉块€昏緫銆傚畠浠湪Vue.js搴旂敤绋嬪簭涓彁渚涗簡涓€绉嶆柟渚跨殑鏂瑰紡鏉ュ鐞嗐€佽浆鎹㈠拰鏍煎紡鍖栨暟鎹€備娇鐢ㄨ繃婊ゅ櫒锛屽彲浠ュ湪妯℃澘涓交鏉惧湴瀵规暟鎹繘琛屽鐞嗭紝鑰屾棤闇€鍦ㄧ粍浠堕€昏緫涓紪鍐欓澶栫殑浠g爜銆傛帴涓嬫潵灏嗚缁嗚В閲奦ue杩囨护鍣ㄧ殑鍔熻兘鍜岀敤娉曘€?/p>
涓€銆佹牸寮忓寲鏁版嵁
Vue杩囨护鍣ㄦ渶甯歌鐨勭敤閫斾箣涓€鏄牸寮忓寲鏁版嵁銆傚浜庨渶瑕佸湪妯℃澘涓睍绀虹殑鍘熷鏁版嵁锛岃繃婊ゅ櫒鍙互杩涜閫傚綋鐨勮浆鎹紝浣垮叾鏇村叿鍙鎬у拰鐢ㄦ埛鍙嬪ソ鎬с€?/p>
甯歌鐨勬暟鎹牸寮忓寲鍦烘櫙鍖呮嫭锛?/strong>
-
鏃ユ湡鏍煎紡鍖?/strong>
灏嗘椂闂存埑鎴朓SO鏃ユ湡瀛楃涓茶浆鎹㈡垚浜虹被鍙鐨勬棩鏈熸牸寮忋€?/p>Vue.filter('dateFormat', function(value) {
if (!value) return ''
const date = new Date(value)
return date.toLocaleDateString()
})
-
璐у竵鏍煎紡鍖?/strong>
灏嗘暟瀛楄浆鎹负璐у竵鏍煎紡锛屽甫鏈夎揣甯佺鍙峰拰灏忔暟鐐广€?/p>Vue.filter('currency', function(value) {
if (!value) return ''
return '$' + parseFloat(value).toFixed(2)
})
-
瀛楃涓茶浆鎹?/strong>
灏嗗瓧绗︿覆杞崲涓哄ぇ鍐欍€佸皬鍐欐垨棣栧瓧姣嶅ぇ鍐欏舰寮忋€?/p>Vue.filter('capitalize', function(value) {
if (!value) return ''
return value.charAt(0).toUpperCase() + value.slice(1)
})
浜屻€佸寮烘暟鎹睍绀?/h2>
Vue杩囨护鍣ㄥ彲浠ョ敤浜庡寮烘暟鎹睍绀猴紝涓虹敤鎴锋彁渚涙洿鐩磋鐨勪俊鎭€傞€氳繃杩囨护鍣紝鍙互杞绘澗鍦板皢鏁版嵁杞崲涓哄浘琛ㄣ€佸浘鏍囨垨鍏朵粬瑙嗚鏁堟灉銆?/p>
澧炲己鏁版嵁灞曠ず鐨勭ず渚嬪寘鎷細
-
鐘舵€佽浆鎹?/strong>
鏍规嵁鏁版嵁鐘舵€佹樉绀轰笉鍚岀殑鍥炬爣鎴栭鑹层€?/p>Vue.filter('statusIcon', function(value) {
if (value === 'active') return '馃煝'
if (value === 'inactive') return '馃敶'
return '鈿笍'
})
-
鍗曚綅杞崲
灏嗘暟瀛楄浆鎹负甯︽湁閫傚綋鍗曚綅鐨勬牸寮忋€?/p>Vue.filter('fileSize', function(value) {
if (value < 1024) return value + ' B'
else if (value < 1048576) return (value / 1024).toFixed(2) + ' KB'
else return (value / 1048576).toFixed(2) + ' MB'
})
-
鐧惧垎姣旇浆鎹?/strong>
灏嗗皬鏁拌浆鎹负鐧惧垎姣旀牸寮忋€?/p>Vue.filter('percentage', function(value) {
if (!value) return '0%'
return (value * 100).toFixed(2) + '%'
})
涓夈€佺畝鍖栨ā鏉块€昏緫
閫氳繃浣跨敤杩囨护鍣紝鍙互澶уぇ绠€鍖栨ā鏉夸腑鐨勯€昏緫浠g爜锛屼娇妯℃澘鏇村姞绠€娲佸拰鏄撹銆傝繃婊ゅ櫒鍙互灏嗗鏉傜殑閫昏緫灏佽璧锋潵锛屼娇妯℃澘浠g爜鏇村姞娓呮櫚銆?/p>
绠€鍖栨ā鏉块€昏緫鐨勭ず渚嬪寘鎷細
-
鏉′欢鏍煎紡鍖?/strong>
灏嗘潯浠舵牸寮忓寲閫昏緫灏佽鍦ㄨ繃婊ゅ櫒涓€?/p>Vue.filter('isAdmin', function(value) {
return value ? 'Administrator' : 'User'
})
-
鏁板€煎鐞?/strong>
灏嗘暟鍊煎鐞嗛€昏緫灏佽鍦ㄨ繃婊ゅ櫒涓€?/p>Vue.filter('round', function(value) {
if (!value) return 0
return Math.round(value)
})
-
鏂囨湰鎴柇
灏嗘枃鏈埅鏂€昏緫灏佽鍦ㄨ繃婊ゅ櫒涓€?/p>Vue.filter('truncate', function(value, length) {
if (!value) return ''
if (value.length <= length) return value
return value.substring(0, length) + '...'
})
鍥涖€佽繃婊ゅ櫒鐨勪娇鐢ㄦ柟娉?/h2>
鍦╒ue.js搴旂敤绋嬪簭涓紝浣跨敤杩囨护鍣ㄩ潪甯哥畝鍗曘€傚彲浠ョ洿鎺ュ湪妯℃澘涓娇鐢ㄨ繃婊ゅ櫒锛屾垨鍦↗avaScript浠g爜涓皟鐢ㄨ繃婊ゅ櫒銆?/p>
鍦ㄦā鏉夸腑浣跨敤杩囨护鍣細
<p>{{ message | capitalize }}</p>
<p>{{ price | currency }}</p>
<p>{{ date | dateFormat }}</p>
鍦↗avaScript浠g爜涓娇鐢ㄨ繃婊ゅ櫒锛?/strong>
export default {
computed: {
formattedDate() {
return this.$options.filters.dateFormat(this.date)
},
formattedPrice() {
return this.$options.filters.currency(this.price)
}
}
}
浜斻€佸叏灞€杩囨护鍣ㄤ笌灞€閮ㄨ繃婊ゅ櫒
Vue杩囨护鍣ㄥ彲浠ユ槸鍏ㄥ眬鐨勶紝涔熷彲浠ユ槸灞€閮ㄧ殑銆傚叏灞€杩囨护鍣ㄥ彲浠ュ湪鏁翠釜Vue瀹炰緥涓娇鐢紝鑰屽眬閮ㄨ繃婊ゅ櫒浠呭湪鐗瑰畾缁勪欢涓彲鐢ㄣ€?/p>
瀹氫箟鍏ㄥ眬杩囨护鍣細
Vue.filter('reverse', function(value) {
if (!value) return ''
return value.split('').reverse().join('')
})
瀹氫箟灞€閮ㄨ繃婊ゅ櫒锛?/strong>
export default {
filters: {
reverse(value) {
if (!value) return ''
return value.split('').reverse().join('')
}
}
}
鍏€佷娇鐢ㄧ涓夋柟搴撳垱寤鸿繃婊ゅ櫒
鍦╒ue.js涓紝鍙互浣跨敤绗笁鏂瑰簱鍒涘缓杩囨护鍣紝浠ヤ究鏇磋交鏉惧湴澶勭悊澶嶆潅鐨勬暟鎹浆鎹㈤渶姹傘€備緥濡傦紝鍙互浣跨敤moment.js
鏉ュ鐞嗘棩鏈熸牸寮忓寲銆?/p>
浣跨敤moment.js鍒涘缓鏃ユ湡鏍煎紡鍖栬繃婊ゅ櫒锛?/strong>
import moment from 'moment'
Vue.filter('formatDate', function(value, format) {
if (!value) return ''
return moment(value).format(format)
})
鍦ㄦā鏉夸腑浣跨敤moment.js杩囨护鍣細
<p>{{ date | formatDate('YYYY-MM-DD') }}</p>
涓冦€佹€荤粨涓庡缓璁?/h2>
Vue杩囨护鍣ㄦ槸涓€涓己澶т笖鐏垫椿鐨勫伐鍏凤紝鍙互甯姪寮€鍙戣€呰交鏉惧湴鏍煎紡鍖栧拰澶勭悊鏁版嵁锛屼娇妯℃澘浠g爜鏇村姞绠€娲佸拰鏄撹銆傞€氳繃浣跨敤杩囨护鍣紝鍙互鏄捐憲鎻愰珮浠g爜鐨勫彲缁存姢鎬у拰鍙鎬с€備互涓嬫槸涓€浜涘缓璁細
-
鍏呭垎鍒╃敤鍏ㄥ眬杩囨护鍣?/strong>
濡傛灉鏌愪釜杩囨护鍣ㄥ湪澶氫釜缁勪欢涓娇鐢紝寤鸿灏嗗叾瀹氫箟涓哄叏灞€杩囨护鍣紝浠ュ噺灏戦噸澶嶄唬鐮併€?/p> -
淇濇寔杩囨护鍣ㄧ畝鍗?/strong>
杩囨护鍣ㄧ殑閫昏緫搴斿敖閲忕畝鍗曪紝浠ヤ究浜庣悊瑙e拰缁存姢銆傚鏉傜殑閫昏緫鍙互鑰冭檻鏀惧湪璁$畻灞炴€ф垨鏂规硶涓€?/p> -
缁勫悎浣跨敤杩囨护鍣?/strong>
鍙互灏嗗涓繃婊ゅ櫒缁勫悎浣跨敤锛屼互瀹炵幇澶嶆潅鐨勬暟鎹浆鎹㈤渶姹傘€?/p>
閫氳繃鍚堢悊浣跨敤Vue杩囨护鍣紝鍙互澶у箙鎻愬崌Vue.js搴旂敤绋嬪簭鐨勫紑鍙戞晥鐜囧拰鐢ㄦ埛浣撻獙銆?/p>
鏇村闂瓟FAQs锛?/strong>
浠€涔堟槸Vue杩囨护鍣紵
Vue杩囨护鍣ㄦ槸涓€绉嶇敤浜庢牸寮忓寲銆佸鐞嗗拰杞崲鏁版嵁鐨勫姛鑳姐€傚畠鍙互鍦ㄦā鏉夸腑瀵规暟鎹繘琛屽鐞嗭紝浠ヤ究鍦ㄦ覆鏌撴椂鍛堢幇鍑烘墍闇€鐨勬牸寮忋€傞€氳繃浣跨敤杩囨护鍣紝鎴戜滑鍙互杞绘澗鍦板鏁版嵁杩涜鎿嶄綔鍜岃浆鎹紝鑰屾棤闇€鍦ㄧ粍浠朵腑缂栧啓澶ч噺鐨勯€昏緫浠g爜銆?/p>
濡備綍浣跨敤Vue杩囨护鍣紵
浣跨敤Vue杩囨护鍣ㄩ潪甯哥畝鍗曘€傛垜浠渶瑕佸湪Vue瀹炰緥涓畾涔夎繃婊ゅ櫒銆傚彲浠ラ€氳繃Vue.filter()鏂规硶鏉ュ畾涔変竴涓叏灞€杩囨护鍣紝鎴栬€呭湪缁勪欢鍐呴儴浣跨敤filters閫夐」鏉ュ畾涔変竴涓眬閮ㄨ繃婊ゅ櫒銆傜劧鍚庯紝鍦ㄦā鏉夸腑浣跨敤绠¢亾绗︼紙|锛夊皢闇€瑕佽繃婊ょ殑鏁版嵁涓庤繃婊ゅ櫒鍚嶇О杩炴帴璧锋潵銆?/p>
渚嬪锛屾垜浠彲浠ュ畾涔変竴涓悕涓?quot;uppercase"鐨勮繃婊ゅ櫒鏉ュ皢鏂囨湰杞崲涓哄ぇ鍐欙細
Vue.filter('uppercase', function(value) {
return value.toUpperCase();
})
鐒跺悗锛屽湪妯℃澘涓娇鐢ㄨ繃婊ゅ櫒锛?/p>
<p>{{ message | uppercase }}</p>
Vue杩囨护鍣ㄧ殑甯歌鐢ㄩ€旀湁鍝簺锛?/strong>
-
鏂囨湰鏍煎紡鍖?/strong>锛歏ue杩囨护鍣ㄥ彲浠ョ敤浜庡鏂囨湰杩涜鏍煎紡鍖栵紝渚嬪灏嗘枃鏈浆鎹负澶у啓鎴栧皬鍐欍€佹坊鍔犺揣甯佺鍙枫€佹棩鏈熸牸寮忓寲绛夈€?/p>
-
鏁版嵁澶勭悊锛氳繃婊ゅ櫒鍙互鐢ㄤ簬澶勭悊鏁版嵁锛屼緥濡傚鏁扮粍杩涜鎺掑簭銆佺瓫閫夈€佸幓閲嶇瓑鎿嶄綔锛屾垨瀵规暟瀛楄繘琛屾牸寮忓寲銆佸洓鑸嶄簲鍏ャ€佷繚鐣欏皬鏁扮瓑銆?/p>
-
鍥剧墖澶勭悊锛氳繃婊ゅ櫒鍙互鐢ㄤ簬澶勭悊鍥剧墖锛屼緥濡傝鍓€佽皟鏁村ぇ灏忋€佹坊鍔犳护闀滅瓑銆?/p>
-
URL澶勭悊锛氳繃婊ゅ櫒鍙互鐢ㄤ簬澶勭悊URL锛屼緥濡傚URL杩涜缂栫爜銆佽В鐮併€佹嫾鎺ョ瓑銆?/p>
-
鏁版嵁杩囨护锛氳繃婊ゅ櫒鍙互鐢ㄤ簬瀵规暟鎹繘琛岃繃婊わ紝渚嬪鏍规嵁鏉′欢绛涢€夊嚭闇€瑕佺殑鏁版嵁銆?/p>
Vue杩囨护鍣ㄦ彁渚涗簡涓€绉嶇畝鍗曡€岀伒娲荤殑鏂瑰紡鏉ュ鏁版嵁杩涜澶勭悊鍜岃浆鎹紝浣挎垜浠兘澶熸洿濂藉湴鎺у埗鍜屽睍绀烘暟鎹€傛棤璁烘槸瀵规枃鏈€佹暟瀛椼€佸浘鐗囪繕鏄疷RL杩涜澶勭悊锛岃繃婊ゅ櫒閮借兘鎻愪緵渚垮埄鐨勫姛鑳斤紝浣挎垜浠殑搴旂敤鏇村姞寮哄ぇ鍜屾槗浜庣淮鎶ゃ€?/p>