Vue允许我们自定义过滤器,可被用于一些常见的文本格式化。过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示。

​
<!-- 在双花括号中 -->
<div>{{ message | capitalize }}</div>
<!-- 在 `v-bind` 中 -->
<div v-bind:id="rawId | formatId"></div>​

一、全局过滤器
定义一个全局过滤器很简单,只需要导出一个方法即可。

使用的时候很简单,只需要在入口文件全局引入此过滤器即可,使用 Vue.filter(key, value) 引入。

比如,Java后端返回的时间戳精确到秒,而JS中的时间戳是用毫秒表示,则可以定义一个转换时间戳的全局过滤器:

//main.js
import Vue from 'vue'
Vue.filter('millisecond', (value) => {if (!value) return ''value = value.toString()return value.charAt(0).toUpperCase() + value.slice(1)
})

在需要使用的组件使用:

<div>{{1516101106 | millisecond}}</div>

全局过滤器之单一挂载

/*** dateTmp:要过滤的值* fmtTmp:传入的参数,可接收多个参数*/
<template><!-- 2021-12-20 19:14:18 --><div>{{ 1639998858000 | dateFormat("yyyy/MM/dd HH:mm:ss") }}</div>
</template>Vue.filter('dateFormat', function (dateTmp, fmtTmp) {let fmt = fmtTmplet date = dateTmpif (!fmt) {fmt = 'yyyy.MM.dd'}if (!(date instanceof Date)) {date = new Date(date)}let o = {'M+': date.getMonth() + 1, // 月份'd+': date.getDate(), // 日'h+': date.getHours() % 12 == 0 ? 12 : date.getHours() % 12, // 小时'H+': date.getHours(), // 小时'm+': date.getMinutes(), // 分's+': date.getSeconds(), // 秒'q+': Math.floor((date.getMonth() + 3) / 3), // 季度'S': date.getMilliseconds() // 毫秒}let week = {'0': '日','1': '一','2': '二','3': '三','4': '四','5': '五','6': '六'}if (/(y+)/.test(fmt)) {fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))}if (/(E+)/.test(fmt)) {fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? '星期' : '周') : '') + week[date.getDay() + ''])}for (var k in o) {if (new RegExp('(' + k + ')').test(fmt)) {fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))}}return fmt
});

全局过滤器之批量挂载

//定义方法
//filters.js
export function slice (temp,num) {return temp.slice(0,num);
}
//挂载
//main.js
import * as filters from '@/assets/js/filters';Object.keys(filters).forEach(key => {Vue.filter(key, filters[key]);
});
//调用
<div>{{ '123456' | slice(4) }} </div>

二、组件过滤器

组件过滤器更简单,只需在对应组件中定义 filters 即可,不过只针对本组件有效。

比如定义一个首字母大写的过滤器:

//定义方法
export default {filters: {capitalize: function (value) {if (!value) return ''value = value.toString()return value.charAt(0).toUpperCase() + value.slice(1)}}
}

例子例子

<template><div>{{ msg | setSize }}</div>
</template><script>
export default {data() {return {msg: "我要被过滤",};},filters: {setSize(value) {if (value.length > 4) {return value.splice(0, 4) + "...";} else {return value;}},},
};
</script>

VUE中的filters过滤器2种用法相关推荐

  1. vue中关于$emit及propos的用法

    vue中关于$emit及propos的用法 一:父组件可以使用propos把数据传递给子组件. 父组件:在父组件中的子组件标签中,通过父组件给子组件传递函数类型的props实现:子给父传递数据如: 子 ...

  2. vue 中格式化时间 过滤器格式化时间

    vue 中格式化时间 过滤器格式化时间 data.js 格式化方法使用 * // 对Date的扩展,将 Date 转化为指定格式的String // 月(M).日(d).小时(h).分(m).秒(s) ...

  3. mysql中模糊查询的四种用法介绍

    下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示.  比如 SELECT * FROM [user ...

  4. python中list[1啥意思_详解Python中list[::-1]的几种用法

    本文主要介绍了Python中list[::-1]的几种用法,分享给大家,具体如下: s = "abcde" list的[]中有三个参数,用冒号分割 list[param1:para ...

  5. mysql 中模糊查询的四种用法介绍

    下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] ...

  6. mysql中模糊查询的四种用法

    转载自  https://www.cnblogs.com/songfayuan/articles/7290158.html 下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可 ...

  7. java里break的使用方法_Java中break的第三种用法说明

    在Java中,break语句有三种用法,第一种是用于终止switch语句中的语句序列,第二种是用于退出循环,然而第三种是用作goto语句的"文明"形式! 我们知道,goto语句会破 ...

  8. mysql中insert语句的五种用法

    文章目录 前言 一.values参数后单行插入 二.values参数后多行插入 三.搭配select插入数据 四.复制旧表的信息到新表 五.搭配set插入数据 总结 前言 insert语句是标准sql ...

  9. Vue中 模板template的四种写法

    <div id="app"><h1>我是直接写在构造器里的模板1</h1> </div><template id=" ...

  10. 在vue中 storge 和vuex使用的用法区别

    在vue中 storge 和vuex使用的用法区别 1.联动性:storge对于属性的改变不能触发其他页面的改动 storage: 存取login之后就不会改变的信息,比如userId, isAdmi ...

最新文章

  1. 取生产订单状态的逻辑
  2. background-position—CSS设置背景图片的位置
  3. 苹果宣布3月7日召开发布会 预期推iPad 3
  4. python函数方法里面用浅复制深复制_图解 Python 浅拷贝与深拷贝
  5. Z-blog拓源纯净主题
  6. GetSpecialPath 获取应用程序当前目录
  7. EL表达式,JSP内置对象
  8. Hyper-V 2012 R2 故障转移群集之建立域控(AD DS)与加入域
  9. 测试线程池(Java)
  10. 在64位linux上编译曾经在32位linux编译过,含有32位目标文件的错误的解决办法
  11. Message Code 【27796】 Failed to connect to server 'hostname';port_ld': 'reason'.
  12. 1 Kubernetes快速入门
  13. 北京等保测评机构项目测评收费价格标准参考
  14. IOS 编程初体验 第一篇:自学和培训的选择
  15. matlab某奶制品加工厂,奶制品加工问题 - 数学建模.doc
  16. 黄鸭兄《傲慢是精英的耻辱,谦虚是精英的责任》摘录
  17. 提升设计性能的HDL编码方法
  18. 面向对象:期待让我眼前一亮的你
  19. 【总结】Java核心技术36讲知识点大纲
  20. ubunt linux解压gz,ubuntu解压命令

热门文章

  1. Linux软件包管理工具-yum
  2. 千兆网线水晶头的接法
  3. 手把手带你搭建一个简单的webpack脚手架(一)
  4. 机器学习算法基础20210504-0529
  5. java osm pbf_read format .osm.pbf from geofabrik
  6. 计算机按电源键无法反应,笔记本无法正常开机,按下电源键无任何反应要过一段时间才可以开机...
  7. 【Python百日进阶-Web开发-Feffery】Day378 - fac数据展示17:AntdTable 表格 (5)示例:表格校验、监听
  8. vs不允许使用不完整的类型_擦痕破损严重老照片修复,基础工具辅助绘画,不使用素材完整修复...
  9. 锋利的jQuery读书笔记-第7章 jQuery插件的使用和写法
  10. 安卓的网络视频播放器(简易版)