vue实现的封装全局filter并统一管理操作示例


Posted in Javascript onFebruary 02, 2020

本文实例讲述了vue实现的封装全局filter并统一管理操作。分享给大家供大家参考,具体如下:

在前后端分离的项目中,经常会有后台返回的数据需要进过处理才能显示到页面上的场景。

使用最多的场景就是日期和时间的处理,后台一般返回的都是时间戳,那么我们就要对时间戳进行处理。

下面就拿封装全局的处理日期和时间的 filter 来展示如何 vue 如何封装全局 filter 并统一处理。

src 目录下新建 filters 目录用来专门存放全局过滤器,如果项目的过滤器过多,那么就要按类型分类。

我司的项目需要前台处理的数据不是太多,那么就在 filters 目录下新建一个 index.js 来存放所有的过滤器就足够了。

index.js 代码如下:

/*
  日期处理
    time:源时间戳
    type:要处理的格式 默认 xxxx年xx月xx日
      /: xxxx/xx/xx
      .: xxxx.xx.xx
      -: xxxx-xx-xx
 */
export const normalDate = (time,type) => {
  if (time) {
    var date = new Date();
    date.setTime(time);
    var year = date.getFullYear();
    var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) * 1 : date.getMonth() + 1;
    var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
    if(type == '-'){
      return year + '-' + month + '-' + day;
    }else if(type == '/'){
      return year + '/' + month + '/' + day;
    }else if(type == '.'){
      return year + '.' + month + '.' + day;
    }else{
      return year + '年' + month + '月' + day + '日';
    }
  }
}
/*
  时间处理
    time:源时间戳
    type:要处理的格式 默认 xxxx年xx月xx日 xx:xx:xx
      /: xxxx/xx/xx xx:xx:xx
      .: xxxx.xx.xx xx:xx:xx
      -: xxxx-xx-xx xx:xx:xx
 */
export const normalTime = (time,type) => {
  if (time) {
    var date = new Date();
    date.setTime(time);
    var year = date.getFullYear();
    var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) * 1 : date.getMonth() + 1;
    var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
    var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
    var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
    var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
    if(type == '-'){
      return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds;
    }else if(type == '/'){
      return year + '/' + month + '/' + day + ' ' + hours + ':' + minutes + ':' + seconds;
    }else if(type == '.'){
      return year + '.' + month + '.' + day + ' ' + hours + ':' + minutes + ':' + seconds;
    }else{
      return year + '年' + month + '月' + day + '日' + ' ' + hours + ':' + minutes + ':' + seconds;
    }
  }
}

然后在 main.js 中引入注册即可使用:

import * as filters from './filters'
Object.keys(filters).forEach(key => Vue.filter(key, filters[key]));

在页面中使用:

<p>{{time | normalDate('/')}}</p> //这样时间戳就会转化为xxxx/xx/xx的格式

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
让textarea控件的滚动条怎是位与最下方
Apr 20 Javascript
JavaScript传递变量: 值传递?引用传递?
Feb 22 Javascript
javascript截取字符串(通过substring实现并支持中英文混合)
Jun 24 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
Jun 20 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
Jun 13 Javascript
javascript封装addLoadEvent实现页面同时加载执行多个函数的方法
Jul 25 Javascript
理解javascript中的闭包
Jan 11 Javascript
基于jQuery实现数字滚动效果
Jan 16 Javascript
angularjs使用directive实现分页组件的示例
Feb 07 Javascript
js获取一组日期中最近连续的天数
May 25 Javascript
vue实现简单loading进度条
Jun 06 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
Sep 27 Javascript
node 版本切换的实现
Feb 02 #Javascript
vue路由缓存的几种实现方式小结
Feb 02 #Javascript
vue简单封装axios插件和接口的统一管理操作示例
Feb 02 #Javascript
vue实现路由不变的情况下,刷新页面操作示例
Feb 02 #Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
Feb 01 #jQuery
基于node+vue实现简单的WebSocket聊天功能
Feb 01 #Javascript
基于vue和websocket的多人在线聊天室
Feb 01 #Javascript
You might like
PHP伪造referer实例代码
2008/09/20 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
php判断是否为ajax请求的方法
2016/11/29 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
IE/FireFox具备兼容性的拖动代码
2007/08/13 Javascript
js 获取中文拼音,Select自动匹配字母获取值的代码
2009/09/23 Javascript
固定表格行列(expression)在IE下适用
2013/07/25 Javascript
Extjs4中的分页应用结合前后台
2013/12/13 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
在浏览器中实现图片粘贴的jQuery插件-- pasteimg使用指南
2014/12/29 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
javascript运动详解
2015/07/06 Javascript
JavaScript取得键盘按下方向键是哪个的方法
2015/08/04 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
原生JS实现平滑回到顶部组件
2016/03/16 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
9102了,你还不会移动端真机调试吗
2019/03/25 Javascript
[52:03]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第三场 1月31日
2021/03/11 DOTA
python将ansible配置转为json格式实例代码
2017/05/15 Python
Python闭包函数定义与用法分析
2018/07/20 Python
浅述python中深浅拷贝原理
2018/09/18 Python
对python 生成拼接xml报文的示例详解
2018/12/28 Python
python绘制直方图和密度图的实例
2019/07/08 Python
Python标准库itertools的使用方法
2020/01/17 Python
python+selenium 脚本实现每天自动登记的思路详解
2020/03/11 Python
canvas压缩图片以及卡片制作的方法示例
2018/12/04 HTML / CSS
鱼油专家:Omegavia
2016/10/10 全球购物
学校安全教育月活动总结
2014/07/07 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
低碳环保演讲稿
2014/08/28 职场文书
会计实训报告范文
2014/11/04 职场文书
幼儿园个人总结
2015/02/28 职场文书
python 学习GCN图卷积神经网络
2022/05/11 Python