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去掉字符串里的所有空格
Feb 08 Javascript
jquery.validate分组验证代码
Mar 17 Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
Dec 05 Javascript
浅谈Javascript 执行顺序
Dec 18 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
Nov 05 Javascript
bootstrap弹出层的多种触发方式
May 10 Javascript
关于Angular2 + node接口调试的解决方案
May 28 Javascript
详谈Node.js之操作文件系统
Aug 29 Javascript
vue实现微信分享链接添加动态参数的方法
Apr 29 Javascript
vue输入节流,避免实时请求接口的实例代码
Oct 30 Javascript
详解Vue的sync修饰符
May 15 Vue.js
Vue实现tab导航栏并支持左右滑动功能
Jun 28 Vue.js
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
中国的第一台收音机
2021/03/01 无线电
PHP学习笔记之二 php入门知识
2011/01/12 PHP
详解PHP匿名函数与注意事项
2016/03/29 PHP
Laravel多域名下字段验证的方法
2019/04/04 PHP
JQuery自定义事件的应用 JQuery最佳实践
2010/08/01 Javascript
Seajs的学习笔记
2014/03/04 Javascript
javascript实现自动输出文本(打字特效)
2015/08/27 Javascript
js基本算法:冒泡排序,二分查找的简单实例
2016/10/08 Javascript
jquery mobile移动端幻灯片滑动切换效果
2020/04/15 Javascript
canvas绘制的直线动画
2017/01/23 Javascript
JavaScript获取中英文混合字符串长度的方法示例
2017/02/04 Javascript
Bootstrap modal 多弹窗之叠加引起的滚动条遮罩阴影问题
2017/02/27 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
2017/05/24 Javascript
基于JavaScript实现飘落星星特效
2017/08/10 Javascript
浅析vue-router jquery和params传参(接收参数)$router $route的区别
2018/08/03 jQuery
vue 移动端适配方案详解
2018/11/15 Javascript
JavaScript实现选项卡效果的分析及步骤
2019/04/16 Javascript
Javascript实现打鼓效果
2021/01/29 Javascript
Python中实现对list做减法操作介绍
2015/01/09 Python
在Python中操作字符串之startswith()方法的使用
2015/05/20 Python
在Django的通用视图中处理Context的方法
2015/07/21 Python
搭建Python的Django框架环境并建立和运行第一个App的教程
2016/07/02 Python
Python 内置函数complex详解
2016/10/23 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
2019/07/23 Python
Python Web框架之Django框架Model基础详解
2019/08/16 Python
python批量处理文件或文件夹
2020/07/28 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
Django ModelForm操作及验证方式
2020/03/30 Python
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
python Tkinter的简单入门教程
2021/04/11 Python
浅谈Python数学建模之固定费用问题
2021/06/23 Python
SpringBoot 集成短信和邮件 以阿里云短信服务为例
2022/04/22 Java/Android
windows系统安装配置nginx环境
2022/06/28 Servers
el-table-column 内容不自动换行的解决方法
2022/08/14 Vue.js