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 相关文章推荐
给页面渲染时间加速 干掉Dom Level 0 Event
Dec 19 Javascript
Knockout text绑定DOM的使用方法
Nov 15 Javascript
学习javascript的闭包,原型,和匿名函数之旅
Oct 18 Javascript
jQuery实现的左右移动焦点图效果
Jan 14 Javascript
快速入门Vue
Dec 19 Javascript
js实现微博发布小功能
Jan 12 Javascript
javascript 动态生成css代码的两种方法
Mar 17 Javascript
vue.js实例todoList项目
Jul 07 Javascript
详解wow.js中各种特效对应的类名
Sep 13 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
May 22 Javascript
js+canvas实现纸牌游戏
Mar 16 Javascript
聊聊JS ES6中的解构
Apr 29 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
给海燕B411配件机起死回生配上件
2021/03/02 无线电
NOD32 v2.70.32 简体中文封装版 提供下载了
2007/02/27 PHP
PHP实现QQ登录实例代码
2016/01/14 PHP
php微信公众号js-sdk开发应用
2016/11/28 PHP
ThinkPHP5 的简单搭建和使用详解
2018/11/15 PHP
PHP基于mcript扩展实现对称加密功能示例
2019/02/21 PHP
PHP项目多语言配置平台实现过程解析
2020/05/18 PHP
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
jQuery学习笔记之Helloworld
2010/12/22 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
javascript操作字符串的原生方法
2014/12/22 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
BootStrap网页中代码显示用法详解
2016/10/21 Javascript
jQuery实现碰到边缘反弹的动画效果
2018/02/24 jQuery
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
2019/03/28 Javascript
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
uniapp微信小程序:key失效的解决方法
2021/01/20 Javascript
[13:21]DOTA2国际邀请赛采访专栏:RSnake战队国士无双,Fnatic.Fly
2013/08/06 DOTA
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
windows下python安装pip图文教程
2018/05/25 Python
Python画柱状统计图操作示例【基于matplotlib库】
2018/07/04 Python
使用python对文件中的数值进行累加的实例
2018/11/28 Python
Python实现的ftp服务器功能详解【附源码下载】
2019/06/26 Python
python代码 FTP备份交换机配置脚本实例解析
2019/08/01 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
求职者应聘的自我评价
2013/10/16 职场文书
领导的自我鉴定
2013/12/28 职场文书
《两个铁球同时着地》教学反思
2014/02/13 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
开展批评与自我批评心得体会
2014/10/17 职场文书
工会工作个人总结
2015/03/03 职场文书
步步惊心观后感
2015/06/12 职场文书
邓小平文选读书笔记
2015/06/29 职场文书
Spring Boot两种全局配置和两种注解的操作方法
2021/06/29 Java/Android