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 相关文章推荐
javascript实现的网页局布刷新效果
Dec 01 Javascript
extjs render 用法介绍
Sep 11 Javascript
浅谈Javascript线程及定时机制
Jul 02 Javascript
javascript动态获取登录时间和在线时长
Feb 25 Javascript
JavaScript两个变量交换值的实现方法
Mar 01 Javascript
简单谈谈require模块化jquery和angular的问题
Jun 23 jQuery
解决Vue使用mint-ui loadmore实现上拉加载与下拉刷新出现一个页面使用多个上拉加载后冲突问题
Nov 07 Javascript
JS+Canvas绘制动态时钟效果
Nov 10 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
Aug 09 Javascript
详解关于html,css,js三者的加载顺序问题
Apr 10 Javascript
如何使用JavaScript实现栈与队列
Jun 24 Javascript
vue 使用饿了么UI仿写teambition的筛选功能
Mar 01 Vue.js
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生成树的方法
2015/07/28 PHP
PHP实现八皇后算法
2019/05/06 PHP
php链式操作的实现方式分析
2019/08/12 PHP
js传值 判断
2006/10/26 Javascript
屏蔽Flash右键信息的js代码
2010/01/17 Javascript
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
不用锚点也可以平滑滚动到页面的指定位置实现代码
2013/05/08 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)
2016/10/29 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
js原生Ajax的封装和原理详解
2017/03/11 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
JS交互点击WKWebView中的图片实现预览效果
2018/01/05 Javascript
JS对象和字符串之间互换操作实例分析
2019/02/02 Javascript
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
python多线程编程方式分析示例详解
2013/12/06 Python
Python使用urllib2模块实现断点续传下载的方法
2015/06/17 Python
tensorflow 打印内存中的变量方法
2018/07/30 Python
Django之模型层多表操作的实现
2019/01/08 Python
Django 对象关系映射(ORM)源码详解
2019/08/06 Python
Python实现决策树并且使用Graphviz可视化的例子
2019/08/09 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
python七种方法判断字符串是否包含子串
2020/08/18 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
css3发光搜索表单分享
2014/04/11 HTML / CSS
深入浅析HTML5中的article和section的区别
2018/05/15 HTML / CSS
德国受欢迎的旅游和休闲网站:lastminute.de
2019/09/23 全球购物
2014年师德师风学习材料
2014/05/16 职场文书
故意伤害人身损害赔偿协议书
2014/11/19 职场文书
2015小学语文教师个人工作总结
2015/05/20 职场文书
地雷战观后感
2015/06/09 职场文书
超市啤酒狂欢夜策划方案范文!
2019/07/03 职场文书
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android