【Vue.js 入门与实战】--过滤器-定义格式化时间的全局过滤器

简介: 一、全局过滤器的应用演示二、范例

过滤器-定义格式化时间的全局过滤器

 

目录

一、全局过滤器的应用演示

二、范例

 

一、全局过滤器的应用演示

在实例之前通过Vue.filter() 定义过滤器。自定义全局的过滤器,进行时间的格式化。

第一个位置是过滤器的名称dateformatfunction()中传时间字符串 dateStr

Vue.filter('dateformat',function(dateStr) {

//不使用moment 插件进行编写,var dt = new Date(),如果不传任何参数,data 就表示当前的时间。

dateStr 传入,根据给定的时间字符串,得到特定的时间。

var dt = new Date(datestr)

//拼接合法的日期格式,yyyy-mm-dd,分别获取到年月日,再用“-“串联。

var y=dt.getrullYear()//得到四位数年份

var m=dt.getMonth()+1//month 0开始,所以要+1

var d = dt.getDate()//得到某天,如果使用 getDay 得到的是星期几。

 

//return y+’-’+’m’+’-’+d这样书写比较乱,所以可以使用模板字符串:Return`yyyy-mmm-dd`,把yyyy”var y 中的“y“替换。

 

使用如下写法:

Return`${y}-${m}-$ {d}`// 相对于上面的写法,可读性更好,更容易理解。y m d 都分别是变量

} )

//这里就定义好了过滤器。

<td>{{item.ctim|dataformat}}<td>

 

//调用广告符,ctim 交给 dataformat

 

演示效果如下图:

 

 

二、范例

目前的过滤器只能得到年月日,无法提供时分秒,如果得到更完整的时间,必须对过滤器进行改造。

之间的过滤器规定了返回的格式。

Vue.filter('dateformat',function(dateStr,pattern) {//传递一个可视化的字符串pattern ,在调用时可以传pattern 值,比如{item.ctim|dataformat(‘yyyy-MM-DD’)},但是这样无法保证传递的值是大写小写。所以拿到值要先进行tolower case

var dt = new Date(datestr)

 

//yyyy-mm-dd

var y=dt.getrullYear()

var m=dt.getMonth()+1

var d = dt.getDate()

 

//return y+’-’+’m’+’-’+d

If (pattern.tolower case() ===" yyyy-mm-dd') {//判断 pattern值,tolower case()统一小写,便于比较。

Return ‘$(y)-$(m)-$(d)

} else {//获取时分秒

var hh =dt.getHours()

var mm =dt.getMinutes()

var ss = dt.getSeconds()

 

return`${y}-${m}-${d}  ${hh}:${mm}:${ss} `//不能把格式写固定。

}

} )

表示如果传过来的pattern转小写后等于”yyyy-mm-dd”,那么会获取年月日的时间,如果不等于”yyyy-mm-dd”,表示需要获取更全的时间,时分秒。

 

调用:<td>{{item.ctim|dataformat(‘’)}}<td>

这里虽然没有传格式,但是传了参数,一个空字符串。如果不传参数,pattern就没有值,形参不传就等于 undefined 就不能调用tolower case

否则就会报错。要防止这个问题,可以设置If (pattern.&& pattern tolower case() ===" yyyy-mm-dd') pattern 转换为 true 执行后面的步骤。

对这种方式进行优化,把

Vue.filter('dateformat',function(dateStr,pattern)

设置为Vue.filter('dateformat',function(dateStr,pattern=””)也可以成功。


演示效果:

image.png

相关文章
|
18天前
Nest.js 实战 (十三):实现 SSE 服务端主动向客户端推送消息
这篇文章介绍了在Nest.js应用中使用Server-Sent Events (SSE)的技术。文章首先讨论了在特定业务场景下,为何选择SSE而不是WebSocket作为实时通信系统的实现方式。接着解释了SSE的概念,并展示了如何在Nest.js中实现SSE。文章包含客户端实现的代码示例,并以一个效果演示结束,总结SSE在Nest.js中的应用。
Nest.js 实战 (十三):实现 SSE 服务端主动向客户端推送消息
|
6天前
|
JavaScript 前端开发 安全
js逆向实战之烯牛数据请求参数加密和返回数据解密
【9月更文挑战第20天】在JavaScript逆向工程中,处理烯牛数据的请求参数加密和返回数据解密颇具挑战。本文详细分析了这一过程,包括网络请求监测、代码分析、加密算法推测及解密逻辑研究,并提供了实战步骤,如确定加密入口点、逆向分析算法及模拟加密解密过程。此外,还强调了法律合规性和安全性的重要性,帮助读者合法且安全地进行逆向工程。
32 11
|
2天前
|
JavaScript 前端开发
js函数调用与定义
js函数调用与定义
|
4天前
|
存储 JavaScript 前端开发
JavaScript 函数定义
JavaScript 函数定义
17 3
|
25天前
|
JavaScript 前端开发
JavaScript基础知识-数组的定义方式
本文介绍了JavaScript中数组的多种定义方式。
14 1
JavaScript基础知识-数组的定义方式
|
25天前
|
JavaScript 前端开发
JavaScript基础知识-构造函数(也称为"类")定义
本文介绍了JavaScript中构造函数(也称为“类”)的定义和使用方法。
26 1
JavaScript基础知识-构造函数(也称为"类")定义
|
15天前
vue3定义暴露一些常量
vue3定义暴露一些常量
|
19天前
Nest.js 实战 (十二):优雅地使用事件发布/订阅模块 Event Emitter
这篇文章介绍了在Nest.js构建应用时,如何通过事件/发布-订阅模式使应用程序更健壮、灵活、易于扩展,并简化服务间通信。文章主要围绕@nestjs/event-emitter模块展开,这是一个基于eventemitter2库的社区模块,提供了事件发布/订阅功能,使得实现事件驱动架构变得简单。文章还介绍了如何使用该模块,包括安装依赖、初始化模块、注册EventEmitterModule、使用装饰器简化监听等。最后总结,集成@nestjs/event-emitter模块可以提升应用程序的事件驱动能力,构建出更为松耦合、易扩展且高度灵活的系统架构,是构建现代、响应迅速且具有高度解耦特性的Nest.
|
1天前
|
JavaScript 前端开发 UED
组件库实战 | 用vue3+ts实现全局Header和列表数据渲染ColumnList
该文章详细介绍了如何使用Vue3结合TypeScript来开发全局Header组件和列表数据渲染组件ColumnList,并提供了从设计到实现的完整步骤指导。
|
1天前
|
JavaScript 前端开发
用JavaScript编程定义二维数组并初始化,然后输出元素值
用JavaScript编程定义二维数组并初始化,然后输出元素值