Vue-Cli中自定义过滤器的实现代码


Posted in Javascript onAugust 12, 2017

本文主要介绍了Vue-Cli中自定义过滤器,分享给大家,也给自己做个笔记

vue2里面移除了内置过滤器,所有过滤器都需要自己定义。

以下例子是使用webpack模版自定义一个日期格式过滤器的例子。

文件结构

.
├── src
│  ├── Filters
│  │  ├── DataFormat.js
│  │  └── index.js
│  └── main.js
└── ...

所有过滤器都放在Filters文件夹下,剩下的就是webpack模版的文件结构,在这里就不完全写出来。

Filters/DataFormat.js

这个文件主要是写了过滤器实现的方法,然后export进行导出。

export default (time, fmt) => {

 fmt = fmt || 'yyyy-MM-dd hh:mm';
 let date = new Date(time);

 if (/(y+)/.test(fmt)) {
  fmt = fmt.replace(
   RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)
  );
 }

 let dt = {
  'M+': date.getMonth() + 1,
  'd+': date.getDate(),
  'h+': date.getHours(),
  'm+': date.getMinutes(),
  's+': date.getSeconds()
 }

 for (let key in dt) {
  if (new RegExp(`(${key})`).test(fmt)) {
   let str = dt[key] + ''
   fmt = fmt.replace(RegExp.$1, 
    (RegExp.$1.length === 1) ? str : ('00' + str).substr(str.length)
   );
  }
 }

 return fmt;
}

这段代码是在网上找的,我只是对其中稍作修改。

Filters/index.js

这里把所有自定义的过滤器都汇总,方便待会在main.js中一次性添加到全局过滤器中。

如果有多个自定义的过滤器就只需要在这个文件内依次导出就行。

// 导出日期过滤器
import dateFormat from './DateFormat'

// 导出的时候以key value的形式导出,这里就设置了在全局过滤器中的过滤器名字。
export {dateFormat}

// 可以继续导出其他的过滤器

src/main.js

这个文件是程序的主入口,一般负责配置相关的东西。所以添加过滤器的工作毫无疑问的交给它了(也只有在这里能够拿到Vue对象)。

// 默认会找 Filters/index.js
import * as filters from './Filters/'

// 遍历所有导出的过滤器并添加到全局过滤器
Object.keys(filters).forEach((key) => {
 Vue.filter(key, filters[key]);
})

使用

使用起来很简单,和正常的使用方式一摸一样,写在项目中需要的.vue文件中即可

<template>

  <!-- 2017-08-11 21:21 -->
  <h1>{{ new Date() | dateFormat }}</h1>
  
  <!-- 2017年08月11日 21:21:05 -->
  <h1>{{ new Date() | dateFormat('yyyy年MM月dd日 hh:mm:ss') }}</h1>

</template>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 计算图片加载数量的代码
Jan 01 Javascript
javascript简单性能问题及学习笔记
Feb 04 Javascript
JavaScript获取网页中第一个图片id的方法
Apr 03 Javascript
angular2使用简单介绍
Mar 01 Javascript
JavaScript字符串常用的方法
Mar 10 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
Jun 08 Javascript
基于jQuery实现咖啡订单管理简单应用
Feb 10 Javascript
angularjs实现上拉加载和下拉刷新数据功能
Jun 12 Javascript
详解webpack2异步加载套路
Sep 14 Javascript
JavaScript刷新页面的几种方法总结
Mar 28 Javascript
JS实现简单日历特效
Jan 03 Javascript
js实现3D粒子酷炫动态旋转特效
Sep 13 Javascript
react开发教程之React 组件之间的通信方式
Aug 12 #Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
Aug 12 #Javascript
浅谈关于angularJs中使用$.ajax的注意点
Aug 12 #Javascript
详解Vue-Cli 异步加载数据的一些注意点
Aug 12 #Javascript
js模块加载方式浅析
Aug 12 #Javascript
浅谈angular2 组件的生命周期钩子
Aug 12 #Javascript
Node.js pipe实现源码解析
Aug 12 #Javascript
You might like
php使用ob_start()实现图片存入变量的方法
2014/11/14 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
如何使用微信公众平台开发模式实现多客服
2016/01/06 PHP
php使用QueryList轻松采集js动态渲染页面方法
2018/09/11 PHP
event.srcElement+表格应用
2006/08/29 Javascript
jQuery 使用个人心得
2009/02/26 Javascript
js获取页面传来参数的方法
2014/09/06 Javascript
js实现jquery的offset()方法实例
2015/01/10 Javascript
jquery无限级联下拉菜单简单实例演示
2015/11/23 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
详解AngularJS1.x学习directive 中‘&amp; ’‘=’ ‘@’符号的区别使用
2017/08/23 Javascript
十分钟带你快速了解React16新特性
2017/11/10 Javascript
Angular4 Select选择改变事件的方法
2018/10/09 Javascript
node中实现删除目录的几种方法
2019/06/24 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
详解template标签用法(含vue中的用法总结)
2021/01/12 Vue.js
[45:46]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS DT
2014/05/23 DOTA
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
python flask搭建web应用教程
2019/11/19 Python
Python内置异常类型全面汇总
2020/05/28 Python
python3从网络摄像机解析mjpeg http流的示例
2020/11/13 Python
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
什么是Web Service?
2012/07/25 面试题
英语商务邀请函范文
2014/01/16 职场文书
捐款倡议书格式范文
2014/05/14 职场文书
党员教师个人对照检查材料(群众路线)
2014/09/26 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
2019年员工晋升管理制度范本!
2019/07/08 职场文书
实习报告范文之电话客服岗位
2019/07/26 职场文书
Python requests库参数提交的注意事项总结
2021/03/29 Python
Python list去重且保持原顺序不变的方法
2021/04/03 Python
pycharm debug 断点调试心得分享
2021/04/16 Python
MySQL 如何分析查询性能
2021/05/12 MySQL
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers
Win10服务主机占用内存怎么办?Win10服务主机进程占用大量内存解决方法
2022/09/23 数码科技