vue封装全局过滤器的方法详解
更新时间:2024年12月10日 09:15:58 作者:优雅格子衫
这篇文章主要为大家详细介绍了vue封装全局过滤器的方法,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下
1.找到utils下创建fifilter.js
一些常用的过滤方法
export const filters = { //url解码 urlCode: value => { if (!value) return '' let v = decodeURIComponent(value) let bigIndex = v.lastIndexOf('/') let endIndex = v.lastIndexOf('.') let url = v.substring(bigIndex + 1, endIndex) + v.substring(endIndex) return url }, dateFormat: value => { if (!value) return '' value = value * 1000 //new Date 在 ios safari浏览器有兼容性问题处理如下:ios不支持2027-2-22 16:23,需要改为2027/2/22 16:23 // ? 兼容 ios safari : 兼容其他浏览器 let $this = new Date(value) == 'Invalid Date' ? new Date(date.replace(/-/g, "/")) : new Date(value) var timestamp = parseInt(Date.parse($this)) / 1000 //- 8 * 60 * 60; //(本地时间)东八区减去8小时; // console.log(timestamp) function zeroize(num) { return (String(num).length == 1 ? '0' : '') + num; } var curTimestamp = parseInt(new Date().getTime() / 1000); //当前时间戳 // console.log(curTimestamp) var timestampDiff = curTimestamp - timestamp; // 参数时间戳与当前时间戳相差秒数 var curDate = new Date(curTimestamp * 1000); // 当前时间日期对象 var tmDate = new Date(timestamp * 1000); // 参数时间戳转换成的日期对象 var Y = tmDate.getFullYear(), m = tmDate.getMonth() + 1, d = tmDate.getDate(); var H = tmDate.getHours(), i = tmDate.getMinutes(), s = tmDate.getSeconds(); if (timestampDiff < 60) { // 一分钟以内 return "刚刚"; } else if (timestampDiff < 3600) { // 一小时前之内 return Math.floor(timestampDiff / 60) + "分钟前"; } else if (curDate.getFullYear() == Y && curDate.getMonth() + 1 == m && curDate.getDate() == d) { return '今天 ' + zeroize(H) + ':' + zeroize(i) } else { var newDate = new Date((curTimestamp - 86400) * 1000); // 参数中的时间戳加一天转换成的日期对象 if (newDate.getFullYear() == Y && newDate.getMonth() + 1 == m && newDate.getDate() == d) { return '昨天 ' + zeroize(H) + ':' + zeroize(i) } else if (curDate.getFullYear() == Y) { return zeroize(m) + '月' + zeroize(d) + '日'; } else { return Y + '年' + zeroize(m) + '月' + zeroize(d) + '日'; } } }, // 时间过滤器 formatDate: value => { if (value == undefined) { return; } let date = new Date(value * 1000); //时间戳为10位需*1000,时间戳为13位的话不需乘1000 let Y = date.getFullYear() + '年'; let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '月'; let D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + '日'; let h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'; let m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':'; let s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()); return Y + M + D + h + m + s; }, //微信时间 wxleftTime: value => { if (value == undefined) { return; } const date = new Date(value * 1000); const year = date.getFullYear(); const month = (date.getMonth() + 1).toString().padStart(2, '0'); const day = date.getDate().toString().padStart(2, '0'); const hours = date.getHours().toString().padStart(2, '0'); const minutes = date.getMinutes().toString().padStart(2, '0'); if (new Date(Number(value) * 1000).toDateString() === new Date().toDateString()) { return `${hours}:${minutes}`; } else { return `${year}/${month}/${day}`; } }, //千分位 numberToCurrencyNo: value => { if (!value) return 0.00 // 获取整数部分 const intPart = Math.trunc(value) // 整数部分处理,增加, const intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') // 预定义小数部分 let floatPart = '' // 将数值截取为小数部分和整数部分 const valueArray = value.toString().split('.') if (valueArray.length === 2) { // 有小数部分 floatPart = valueArray[1].toString() // 取得小数部分 return intPartFormat + '.' + floatPart } return intPartFormat + floatPart } }
2.在main.js 注册
import { filters } from './utils/filters' // 定义全局自定义过滤器 Object.keys(filters).forEach(key => { Vue.filter(key, filters[key]) })
3.页面使用
{{ item.createtime | dateFormat }}
到此这篇关于vue封装全局过滤器的方法详解的文章就介绍到这了,更多相关vue封装全局过滤器内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
谈一谈vue请求数据放在created好还是mounted里好
这篇文章主要介绍了谈一谈vue请求数据放在created好还是mounted里好的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-07-07vue跨域问题:Access to XMLHttpRequest at‘httplocalhost解决
在前端发出Ajax请求的时候,有时候会产生跨域问题,下面这篇文章主要给大家介绍了关于vue跨域问题:Access to XMLHttpRequest at‘httplocalhost的解决办法,需要的朋友可以参考下2023-01-01vue3+arco design通过动态表单方式实现自定义筛选功能
这篇文章主要介绍了vue3+arco design通过动态表单方式实现自定义筛选,本文主要实现通过动态表单的方式实现自定义筛选的功能,用户可以自己添加筛选的项目,筛选条件及筛选内容,需要的朋友可以参考下2024-05-05
最新评论