Vue.js 允许自定义过滤器,可用作一些常见的文本格式化。过滤器可以用在两个地方:mustache 插值和 v-bind 表达式,被添加在 JavaScript 表达式的尾部,由管道符 (" | ") 指示。过滤器分为全局过滤器和局部过滤器(私有过滤器)。

全局过滤器

过滤器的声明:Vue.filter("过滤器名称","回调函数")

简单过滤器的使用

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title><script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.min.js"></script>
</head>
<body><div id="app"><p>{{msg}}</p><!-- 通过管道符 使用自定义的过滤器 --><p>{{msg | change}}</p></div><script>// 创建一个过滤器Vue.filter('change',function(msg){// 使用正则表达式 全局匹配return msg.replace(/过滤器/g,'变量')})var vm = new Vue({el: "#app",data: {msg:"过滤器,分为全局过滤器和局部过滤器"},})</script>
</body>
</html>

过滤器传参数

在通过管道符号来使用过滤器的时候,我们还可以通过传递参数来达到传值的效果。

<div id="app"><p>{{msg}}</p><p>{{msg | change('变量')}}</p>
</div>
<script>Vue.filter('change',function(msg, msg1){return msg.replace(/过滤器/g, msg1)})
</script>

多个过滤器同时使用

我们对一个信息处理的时候,可以同时使用多个管道符来调用多个过滤器来处理。

<div id="app"><p>{{msg}}</p><p>{{msg | change('变量') | change1}}</p>
</div>
<script>Vue.filter('change',function(msg, msg1){return msg.replace(/过滤器/g, msg1)})Vue.filter('change1',function(msg){return msg+'*************'})
</script>

何为全局过滤器

我们在页面中再增加一个div和一个Vue对象,然后在新增的div中使用我们前面定义的过滤器,来看看效果。

<div id="app"><p>{{msg}}</p><p>{{msg | change('变量') | change1}}</p>
</div>
<div id="app1"><p>{{msg1}}</p><p>{{msg1 | change('vue') | change1}}</p>
</div>
<script>Vue.filter('change',function(msg, msg1){return msg.replace(/过滤器/g, msg1)})Vue.filter('change1',function(msg){return msg+'*************'})var vm = new Vue({el: "#app",data: {msg:"过滤器,分为全局过滤器和局部过滤器"},})var vm1 = new Vue({el: "#app1",data: {msg1:"我们要熟练使用过滤器"},})
</script>

通过以上效果我们就能看出来什么是全局的过滤器了,其实就是我们定义的过滤器可以被本页面中的多个Vue对象所使用。

局部过滤器

相对于全局过滤器来说,局部过滤器就是只能够定义这个过滤器的Vue对象可以使用。

<div id="app"><p>{{msg}}</p><p>{{msg | change('变量') | change1}}</p>
</div>
<div id="app1"><p>{{msg1}}</p><p>{{msg1 | change('vue') | change1}}</p>
</div>
<script>//全局过滤器Vue.filter('change',function(msg, msg1){return msg.replace(/过滤器/g, msg1)})var vm = new Vue({el: "#app",data: {msg:"过滤器,分为全局过滤器和局部过滤器"},//局部过滤器filters:{change1:function(msg){return msg+'*************'}}})var vm1 = new Vue({el: "#app1",data: {msg1:"我们要熟练使用过滤器"},})
</script>


通过页面效果我们发现,在vm对象中定义的过滤器在vm1绑定的div中是不可以使用的。只能在定义的Vue对象绑定的div中使用,这就是局部过滤器。

注意:如果全局过滤器和局部过滤器同名的情况话,会通过就近原则调用局部过滤器!

在Vue案例(二)中,我们把前面介绍的一些常用指令综合运用了一下,但是还有个小问题,就是显示的创建时间 Time 的格式没有处理。

虽然我们可以在后台处理好后再传递给前端,但是在前端应该也需要能够自主的处理。现在我们可以通过Vue的过滤器来解决这个问题。

此处案例中我们通过局部过滤器来实现,当然你也可以通过全局过滤器来实现。

var vm = new Vue({el: "#app",data: {...},methods:{...},filters:{ msgDateFormat:function(msg){// 将字符串转换为Date类型var mt = new Date(msg)// 获取年份var y = mt.getFullYear()// 获取月份 从0开始 var m = (mt.getMonth()+1).toString().padStart(2,"0")// 获取天数var d = mt.getDate().toString().padStart(2,"0")// 获取小时var h = mt.getHours().toString().padStart(2,"0")// 获取分钟var mi = mt.getMinutes().toString().padStart(2,"0")// 获取秒var s = mt.getSeconds().toString().padStart(2,"0")// 拼接为我们需要的格式return y+"-"+m+"-"+d+" "+h+":"+mi+":"+s}}
})


知识拓展:

方法 说明
String.prototype.padStart(maxLength, fillString=’’) 字符串长度为maxLength,若是不够,在开头用fillString填充,
例如 :“123”.padStart(6,“a”)=“aaa123”
String.prototype.padEnd(maxLength, fillString=’’) 与padStart类似,在结尾处填充,
例如"123".padEnd(6,“a”)=“123aaa”

【Vue】全局过滤器和局部过滤器相关推荐

  1. vue 全局刷新与局部刷新

    首先说下区别: 全局刷新:是指页面整体刷新,会出现空白,闪烁的情况 局部刷新:是指某个进行重构加载,不会出现空白 全局刷新: App.vue <template><div id=&q ...

  2. vue全局组件与局部组件

  3. gateway中的局部过滤器_vue 过滤器

    vue 过滤器 1 关于 vue 过滤器 在vue1.0的时候其实是内置了过滤器的,但是考虑到好多过滤器并不一定会被开发所调用,所以把原本内置的过滤器就给去掉了,但是过滤器还是比较普遍的,所以我们从v ...

  4. Vue(3)之 过滤器

    1.过滤器简介 1.1.全局过滤器与局部过滤器 过滤器本质上是一个函数,与自定义指令类似. 全局过滤器 Vue.filter(id, [definition]) 局部过滤器 new Vue({el: ...

  5. Vue全局API总结

    1.extend用于创建一个子类Vue,用$mount来挂载 <body> <div id="app"></div> <script> ...

  6. vue过滤器——vue全局过滤器,

    一.全局过滤器 1.用法: // 注册 Vue.filter('my-filter', function (value) { // 返回处理后的值 }) // getter,返回已注册的过滤器 var ...

  7. Vue---过滤器---普通过滤器使用、串联过滤器、局部与全局过滤器

    过滤器: 定义:对要显示的数据进行特定格式化后再显示(适用于一些简单逻辑的处理) 语法: 1.注册过滤器:Vue.filter(name,callback)  或 new Vue{ filters:{ ...

  8. 全局过滤器/局部过滤器

    1.事件对象 谁触发这个事件,事件对象就指向谁 $event 2.事件修饰符 语法:@事件.按键修饰符="函数()" 按键修饰符 .up .down .ctrl .enter .s ...

  9. vue全局过滤器配置

    有时一个过滤器需要在项目中多次使用,此时可以将该过滤器定义为全局过滤器,全局过滤器在main.js下配置.以时间过滤器为例,当为局部过滤器写为: filters: {timeForm(val) {if ...

最新文章

  1. 明日开播 | 7 场不可错过的 AI 技术专题
  2. Python 进阶_闭包 装饰器
  3. POJ 1944 - Fiber Communications
  4. JavaScript君,请您坦诚相待~~~
  5. ERP开放平台定制化远程高效协作秘笈
  6. 将Redis集成到您的Spring项目中
  7. 揭秘!双非渣本Android四年磨一剑,学习路线+知识点梳理
  8. 安装itunes需要管理员身份_ITUNES无法安装,提示没有权限如何解决?
  9. ios开发网络篇—HTTP协议 - 转
  10. python如何获取输入_python如何从键盘获取输入实例
  11. 计算机考研各科目分数,考研各科目及分数
  12. HDU - 2102 A计划(双层BFS)
  13. 双刃剃须刀行业调研报告 - 市场现状分析与发展前景预测
  14. mysql null 查询条件_MySql当查询条件为空时不作为条件查询
  15. 转-从早到晚被工作追着跑? 10招提高你的工作效率
  16. MVC @Html.TextBox 添加属性和样式
  17. Quick Reference 代码速查表
  18. python-点击消除
  19. Adobe Photoshop CS5 汉化包下载
  20. 正则验证邮箱、手机号

热门文章

  1. python函数实例化_Python中的__new__()方法与实例化
  2. 大数据系列的默认端口(hbase,hadoop,hived等)
  3. DenseNet论文笔记
  4. Unity3D-声音处理
  5. 服务器配置RAID5(3块硬盘做RAID5,另外再弄一块做数据冗余盘)
  6. 09 进程池的异步方法
  7. 对于整数数组类的算法的终极解决方案
  8. Sql Server参数化查询之where in和like实现之xml和DataTable传参
  9. windows添加删除程序打不开解决方案
  10. Flutter 随机颜色 颜色处理工具类