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 相关文章推荐
在 IE 中调用 javascript 打开 Excel 表
Dec 21 Javascript
jquery.uploadify插件在chrome浏览器频繁崩溃解决方法
Mar 01 Javascript
JS实用的动画弹出层效果实例
May 05 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
May 18 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
Oct 29 Javascript
jQuery删除当前节点元素
Dec 07 Javascript
jquery,js简单实现类似Angular.js双向绑定
Jan 13 Javascript
JS实现的验证身份证及获取地区功能示例
Jan 16 Javascript
微信小程序 利用css实现遮罩效果实例详解
Jan 21 Javascript
基于JavaScript实现瀑布流布局
Aug 15 Javascript
JS中使用react-tooltip插件实现鼠标悬浮显示框
May 15 Javascript
详解js常用分割取字符串的方法
May 15 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脚本
2006/11/26 PHP
php 正则表达式小结
2009/08/31 PHP
ecshop后台编辑器替换成ueditor编辑器
2015/03/03 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
php文件管理基本功能简单操作
2017/01/16 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
PHP微信发送推送消息乱码的解决方法
2019/02/28 PHP
jquery ajax提交表单数据的两种方式
2009/11/24 Javascript
js获取判断上传文件后缀名的示例代码
2014/02/19 Javascript
jquery插件开发之实现md5插件
2014/03/17 Javascript
Javascript中的匿名函数与封装介绍
2015/03/15 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
jquery弹出遮掩层效果【附实例代码】
2016/04/28 Javascript
详解JS几种变量交换方式以及性能分析对比
2016/11/25 Javascript
常用的javascript设计模式
2017/01/11 Javascript
解决给dom元素绑定click等事件无效问题的方法
2017/02/17 Javascript
EsLint入门学习教程
2017/02/17 Javascript
Three.js入门之hello world以及如何绘制线
2017/09/25 Javascript
微信小程序实现下拉刷新和轮播图效果
2017/11/21 Javascript
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
工作中常用到的ES6语法
2018/09/04 Javascript
[01:00:53]OG vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python脚本实现验证码识别
2018/06/07 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
Python中最大递归深度值的探讨
2019/03/05 Python
浅谈JupyterNotebook导出pdf解决中文的问题
2020/04/22 Python
opencv 图像滤波(均值,方框,高斯,中值)
2020/07/08 Python
使用bandit对目标python代码进行安全函数扫描的案例分析
2021/01/27 Python
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
美国优质马术服装购买网站:Breeches.com
2019/12/16 全球购物
Chi Chi London官网:购买连衣裙和礼服
2020/10/25 全球购物
酒店行政人事部经理职务说明书
2014/02/26 职场文书
法人代表授权委托书
2014/04/08 职场文书
贷款委托书怎么写
2014/08/02 职场文书
2015年信访工作总结
2015/04/07 职场文书
企业团队精神心得体会
2016/01/19 职场文书