欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-05-26 08:10:04
本文主要介绍了vue-cli中自定义过滤器,分享给大家,也给自己做个笔记 vue2里面移除了内置过滤器,所有过滤器都需要自己定义。 以下例子是使用webpack模版...

本文主要介绍了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>

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