1.概念:

Vue.js 允许你自定义过滤器,可被用作一些常见文本的格式化,过滤器可以用在两个地方:mustache 插值和 v-bind 表达式。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符指示;

2.过滤器调用时候的格式:

例如:下面HTML元素使用过滤器(在输出ctime的时候使用过滤器进行处理,| 管道符)

使用Vue过滤器对下面时间进行格式化:

<td>{{item.ctime | dataFormat('yyyy-mm-dd')}}</td>

3.在Vue中过滤器定义语法:

Vue.filter('过滤器的名称', function(){})

注意:过滤器中的 function 中的第一个参数已经被规定死了,永远都是过滤器|管道符前面传递过来的数据
例如:Vue.filter('过滤器的名称', function (data) {return data + '123'})

4.过滤器的基本使用:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="./lib/vue-2.4.0.js"></script>
</head> <body>
<div id="app">
<p>{{ msg | msgFormat('疯狂+1', '123') | test }}</p>
</div> <script>
// 定义一个Vue全局的过滤器,名字叫做msgFormat,过滤器中可进行传参
Vue.filter('msgFormat', function (msg, arg, arg2) {
// 字符串的replace方法的第一个参数,除了可写一个字符串之外,还可以定义一个正则,g表示全局匹配
return msg.replace(/单纯/g, arg + arg2)
}) Vue.filter('test', function (msg) {
return msg + '========'
}) // 创建 Vue 实例,得到 ViewModel
var vm = new Vue({
el: '#app',
data: {
msg: '曾经,我也是一个单纯的少年,单纯的我,傻傻的问,谁是世界上最单纯的男人'
},
methods: {}
});
</script>
</body>
</html>

在Vue中可以多次调用过滤器

5.定义格式化时间的全局过滤器dataFormat('yyyy-mm-dd')带参数:

<script>
//全局的过滤器,进行时间的格式化(所谓的全局过滤器,就是所有的Vue的vm实例都共享的)
Vue.filter('dateFormat', function (dateStr, pattern) {
// 根据给定的时间字符串,得到特定的时间
var dt = new Date(dateStr)
//yyyy-mm-dd
var y = dt.getFullYear()
var m = dt.getMonth() + 1
var d = dt.getDate() if (pattern.toLowerCase() === 'yyyy-mm-dd') {
return `${y}-${m}-${d}`
} else {
var hh = dt.getHours()
var mm = dt.getMinutes()
var ss = dt.getSeconds()
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
})
</script>

6.定义格式化时间的全局过滤器dataFormat()不带参数:

<script>
//全局的过滤器,进行时间的格式化(所谓的全局过滤器,就是所有的VM实例都共享的)
Vue.filter('dateFormat', function (dateStr, pattern="") {
// 根据给定的时间字符串,得到特定的时间
var dt = new Date(dateStr)
//yyyy-mm-dd
var y = dt.getFullYear()
var m = dt.getMonth() + 1
var d = dt.getDate()
    //pattern设置为""(ES6形参的默认值),否则pattern.toLowerCase报错
if (pattern.toLowerCase() === 'yyyy-mm-dd') {
return `${y}-${m}-${d}`
} else {
var hh = dt.getHours()
var mm = dt.getMinutes()
var ss = dt.getSeconds()
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
})
</script>

7.定义格式化时间的私有过滤器(局部):

控制区域:app2的私有过滤器

<div id="app2">
<h3 v-color="'pink'" v-fontweight="900" v-fontsize="50">{{ dt | dateFormat }}</h3>
</div>
 //如何自定义一个私有的过滤器(局部)
var vm2 = new Vue({
el: '#app2',
data: {
dt: new Date()
},
methods: {},
filters: { // 定义私有过滤器 过滤器有两个条件【过滤器名称 和 处理函数】
//过滤器调用的时候,采用的是就近原则,如果私有过滤器和全局过滤器名称一致了,优先调用私有过滤器
dateFormat: function (dateStr, pattern = '') {
//根据给定的时间字符串,得到特定的时间
var dt = new Date(dateStr) //yyyy-mm-dd
var y = dt.getFullYear()
var m = (dt.getMonth() + 1).toString().padStart(2, '0')
var d = dt.getDate().toString().padStart(2, '0') if (pattern.toLowerCase() === 'yyyy-mm-dd') {
return `${y}-${m}-${d}`
} else {
var hh = dt.getHours().toString().padStart(2, '0')
var mm = dt.getMinutes().toString().padStart(2, '0')
var ss = dt.getSeconds().toString().padStart(2, '0') return `${y}-${m}-${d} ${hh}:${mm}:${ss} ~~~~~~~`
}
}
}
})

注意:使用ES6中的字符串新方法 String.prototype.padStart(maxLength, fillString='') 或 String.prototype.padEnd(maxLength, fillString='')来填充字符串;

最新文章

  1. 【译】Unity3D Shader 新手教程(4/6) &mdash;&mdash; 卡通shader(入门版)
  2. Selenium 2.0 + Java 入门之环境搭建
  3. Swift设置自动行高
  4. go 入门之环境搭建-Windows
  5. Struts2对Ognl的支持
  6. 【poj3608】 Bridge Across Islands
  7. Ubuntu 关闭锁屏界面的 on-screen keyboard
  8. 《A First Course in Probability》-chape1-组合分析-二项式定理
  9. 让iframe调用页面的背景透明
  10. Android:TextView最小行数设置
  11. js笔记(制作一个简单的计数器)
  12. mybatis实战教程一:开发环境搭建
  13. javascript中的BOM对象
  14. 并行排序ShearSort ---[MPI , c++]
  15. Docker服务器的图形显示方案
  16. PAT 列车厢调度&#160;&#160;&#160;(25分)(栈和容器的简单应用)
  17. volatile是否就是原子性/线程同步的
  18. MVC,MVP 和 MVVM 的图示(转)
  19. Unity 动画系统目录 之 Animation
  20. 如何在Linux的桌面上创建快捷方式或启动器

热门文章

  1. MongoDB集群之分片技术应用 —— 学习笔记
  2. react-developer-tools
  3. Xena L23网络测试仪Valkyrie使用技巧100例,目录
  4. PC电脑端支付宝扫码付款出现编码错误提示原因
  5. 迷惑性很强的crontab
  6. [转帖]java的编译器,解释器和即时编译器概念
  7. C++ 日志库 boost::log 以及 glog 的对比
  8. Django 关联查询
  9. 数据类型 _python
  10. 1267: 展开字符串(Java)