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 相关文章推荐
jquery showModelDialog的使用方法示例详解
Nov 19 Javascript
javascript中全局对象的parseInt()方法使用介绍
Dec 19 Javascript
Jquery动态添加及删除页面节点元素示例代码
Jun 16 Javascript
编写自己的jQuery提示框(Tip)插件
Feb 05 Javascript
jQuery UI插件自定义confirm确认框的方法
Mar 20 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
Dec 04 Javascript
JS简单去除数组中重复项的方法
Sep 13 Javascript
bootstrap Table插件使用demo
Aug 07 Javascript
Vue.js中使用iView日期选择器并设置开始时间结束时间校验功能
Aug 12 Javascript
vue中引用swiper轮播插件的教程详解
Aug 16 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
Oct 19 Javascript
原生JS实现pc端轮播图效果
Dec 21 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提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
2012/03/27 PHP
php算法实例分享
2015/07/14 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
2018/06/20 PHP
IE与firefox之jquery用法区别
2008/10/03 Javascript
自己的js工具_Form 封装
2009/08/21 Javascript
Javascript执行效率全面总结
2013/11/04 Javascript
javascript日期格式化示例分享
2014/03/05 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
Bootstrap实现弹性搜索框
2016/07/11 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
工厂模式在JS中的实践
2017/01/18 Javascript
DataTables添加额外的查询参数和删除columns等无用参数实例
2017/07/04 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
vue mounted组件的使用
2018/06/18 Javascript
JS中DOM元素的attribute与property属性示例详解
2018/09/04 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
python创建临时文件夹的方法
2015/07/06 Python
浅谈Python 集合(set)类型的操作——并交差
2016/06/30 Python
Python文本特征抽取与向量化算法学习
2017/12/22 Python
python中aioysql(异步操作MySQL)的方法
2019/04/11 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
python 画条形图(柱状图)实例
2020/04/24 Python
汽车检测与维修个人求职信
2013/09/24 职场文书
加拿大探亲邀请信
2014/01/28 职场文书
小学开学典礼主持词
2014/03/19 职场文书
班干部演讲稿
2014/04/24 职场文书
原料仓仓管员岗位职责
2014/07/08 职场文书
离婚协议书怎么写
2014/09/12 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
会计人员岗位职责
2015/02/03 职场文书
爸爸的三轮车观后感
2015/06/16 职场文书
初中英语教学反思范文
2016/02/15 职场文书
Python提取PDF指定内容并生成新文件
2021/06/09 Python
Java tomcat手动配置servlet详解
2021/11/27 Java/Android