vue-cli 3 全局過濾器的實例代碼詳解
在vue1.x版本里是自帶里幾個基礎(chǔ)的過濾器的(雖然不怎么用到)。
到了vue2.x版本之后,內(nèi)置到幾個過濾器就被刪掉了,如果需要用到過濾器,就要開發(fā)者自己去定義。
可以把過濾器定義在某個組件內(nèi)部,但這樣就成了局部過濾器,在別的組件里是無法使用的。所以通常不會這么做。
也可以把過濾器寫在main.js里。但如果項目中存在多個過濾器,這會使main.js文件看上去很龐大,不便于后期維護(hù)。
所以通常會新建一個js文件,專門用來存放所有過濾器。最后再引到main.js中供全局使用。
1、創(chuàng)建 filters.js
首先新建一個filters.js文件。把這個文件放在 src/assets 里。
因為這里是用來存放靜態(tài)資源的。這個文件夾可以用來存放圖片、css和部分自定義的功能的js資源。如果需要更好的分類,可以在 assets 文件夾里再創(chuàng)建 js 、 css 、 img 等文件夾。
2、創(chuàng)建過濾器規(guī)則
這里我創(chuàng)建了3個過濾器
// 轉(zhuǎn)小寫 let lower = value => value.toLowerCase(); // 轉(zhuǎn)大寫 let upper = value => value.toUpperCase(); let currencyStyle = (value, style) => { // 貨幣格式 /** * style: * currency:貨幣 * number: 數(shù)字格式 */ if(style == 'number') { // 數(shù)字格式 return parseFloat(value.replace(/[^\d\.-]/g, "")); } else { // 貨幣格式, 并保留2位小數(shù) var n = 2; value = parseFloat((value + "").replace(/[^\d\.-]/g, "")).toFixed(n) + ""; var l = value.split(".")[0].split("").reverse(), r = value.split(".")[1]; var t = ""; for (var i = 0; i < l.length; i++) { t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : ""); } return t.split("").reverse().join("") + "." + r; } } export { lower, upper, currencyStyle }
3、在main.js里注冊全局過濾器
import Vue from 'vue' import App from './App.vue' import * as filters from './assets/filters' Object.keys(filters).forEach(key => { Vue.filter(key, filters[key]) }) Vue.config.productionTip = false new Vue({ render: h => h(App), }).$mount('#app')
通過 forEach 循環(huán),把自定義功能分別注冊到過濾器里。
4、在組件里使用
<template> <div id="app"> <p>{{ num1 | currencyStyle('currency') }}</p> <p>{{ num2 | currencyStyle('number') }}</p> <p>{{ msg1 | lower }}</p> <p>{{ msg2 | upper }}</p> </div> </template> <script> export default { name: 'app', data() { return { num1: 123456, num2: '123,456', msg1: 'ABC', msg2: 'def' } } } </script>
總結(jié)
以上所述是小編給大家介紹的vue-cli 3 全局過濾器的實例代碼詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
vue3+ts+elementui-plus二次封裝彈框?qū)崙?zhàn)教程
這篇文章主要介紹了vue3+ts+elementui-plus二次封裝彈框?qū)崙?zhàn)教程,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-07-07Vue3 SFC 和 TSX 方式自定義組件實現(xiàn) v-model的詳細(xì)
v-model 是 vue3 中的一個內(nèi)置指令,很多表單元素都可以使用這個屬性,如 input、checkbox 等,咱可以在自定義組件中實現(xiàn) v-model,這篇文章主要介紹了Vue3 SFC 和 TSX 方式自定義組件實現(xiàn) v-model,需要的朋友可以參考下2022-10-10Vue的v-model的幾種修飾符.lazy,.number和.trim的用法說明
這篇文章主要介紹了Vue的v-model的幾種修飾符.lazy,.number和.trim的用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-08-08element?el-upload文件上傳覆蓋第一個文件的實現(xiàn)
這篇文章主要介紹了element?el-upload文件上傳覆蓋第一個文件的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03