Vue如何引入全局過濾器
更新時間:2023年01月23日 12:47:17 作者:呱呱?.?
這篇文章主要介紹了Vue如何引入全局過濾器問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
Vue引入全局過濾器
創(chuàng)建單獨的文件

加上時間過濾函數(shù)
將formatDate 暴露export 出來
// 時間戳轉時分秒
function getformatDate (date, fmt) {
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
}
let o = {
'M+': date.getMonth() + 1,
'd+': date.getDate(),
'h+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds()
};
for (let k in o) {
if (new RegExp(`(${k})`).test(fmt)) {
let str = o[k] + '';
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
}
}
return fmt;
};
function padLeftZero (str) {
return ('00' + str).substr(str.length);
};
// 時間過濾
export function formatDate(time) {
return getformatDate(new Date(time), "yyyy-MM-dd hh:mm");
}
在main.js中全局引入
import * as filters from './filters' // global filters
// register global utility filters.
Object.keys(filters).forEach(key => {
Vue.filter(key, filters[key])
})
在組件中使用formatDate過濾時間戳
<el-table :data="item.children" style="width: 100%">
<el-table-column prop="title" label="標題"></el-table-column>
<el-table-column prop="portName" label="上傳單位"></el-table-column>
<el-table-column prop="createdTime" label="上傳時間">
<template slot-scope="scope">{{scope.row.createdTime | formatDate}}</template>
</el-table-column>
</el-table>
頁面顯示

vue全局過濾器配置
有時一個過濾器需要在項目中多次使用,此時可以將該過濾器定義為全局過濾器,全局過濾器在main.js下配置。
以時間過濾器為例,當為局部過濾器寫為:
filters: {
? timeForm(val) {
?
? ? ? ? if (typeof (value) == "undefined" || value === null) return "";
?
? ? ? ? let date = new Date(value);
? ? ? ? var y = date.getFullYear();
? ? ? ? var m = date.getMonth() + 1;
? ? ? ? var d = date.getDate();
? ? ? ? if (isNaN(y) && y != 0) {
? ? ? ? ? y = " ";
? ? ? ? }
? ? ? ? if (isNaN(m) && m != 0) {
? ? ? ? ? m = " ";
? ? ? ? } else {
? ? ? ? ? (m < 10 ? "0" + m : m);
? ? ? ? }
? ? ? ? if (isNaN(d) && d != 0) {
? ? ? ? ? d = " ";
? ? ? ? } else {
? ? ? ? ? (d < 10 ? "0" + d : d);
? ? ? ? }
?
? ? ? ? return y + "-" + m + "-" + d + " " + date.toTimeString().substr(0, 5);
}現(xiàn)在我們把它設置成全局過濾器
Vue.filter('timeForm', function (value) {
? if (typeof (value) == "undefined" || value === null) return "";
?
? let date = new Date(value);
? var y = date.getFullYear();
? var m = date.getMonth() + 1;
? var d = date.getDate();
? if (isNaN(y) && y != 0) {
? ? y = " ";
? }
? if (isNaN(m) && m != 0) {
? ? m = " ";
? } else {
? ? (m < 10 ? "0" + m : m);
? }
? if (isNaN(d) && d != 0) {
? ? d = " ";
? } else {
? ? (d < 10 ? "0" + d : d);
? }
? return y + "-" + m + "-" + d + " " + date.toTimeString().substr(0, 5);
});
var timeForm = Vue.filter('timeForm');- 直接定義為:Vue.filter('timeForm', function (value) { //過濾代碼}
- 然后定義一下過濾器:var timeForm = Vue.filter('timeForm')
使用的時候和局部過濾器相同方式使用,直接{{ value | filter }} 即可
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
vue3中el-uplod結合ts實現(xiàn)圖片粘貼上傳
本文主要介紹了vue3中el-uplod結合ts實現(xiàn)圖片粘貼上傳,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-07-07
vue中的addEventListener和removeEventListener用法說明
這篇文章主要介紹了vue中的addEventListener和removeEventListener用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06

