Vue过滤器

文章目录

1局部过滤器:

javascript 复制代码
filters: {
  capitalize: function (value) {
    if (!value) return ''
    value = value.toString()
    return value.charAt(0).toUpperCase() + value.slice(1)
  }
}

局部的就在组件里跟data同级定义filters对象,里面写键值对形式的过滤函数,这个过滤器就只有当前组件能用,模板里直接用管道符跟在要处理的值后面就行,组件里如果写了重名的局部过滤器,后写的会直接覆盖前面的。

2全局过滤器

javascript 复制代码
Vue.filter('capitalize', function (value) {
  if (!value) return ''
  value = value.toString()
  return value.charAt(0).toUpperCase() + value.slice(1)
})

new Vue({
  // ...
})

全局过滤器是在main.js里import之后、new

Vue之前,多次调用Vue.filter来定义,一次定义一个,不用额外配置,定义完所有组件都能直接用,要是全局和局部过滤器重名了,那局部的优先级更高,组件里会用局部的,全局的就被屏蔽了。

3过滤器使用

javascript 复制代码
 <!-- 在双花括号中 -->
{{ message | capitalize }}

<!-- 在 `v-bind` 中 -->
<div v-bind:id="rawId | formatId"></div>
//串联使用
{{ message | filterA | filterB }}

过滤器本质是函数,能串联使用,用多个管道符就行,会从左到右依次执行,前一个的返回值就是后一个的原始值。过滤器函数的第一个参数永远是模板里管道符左边的原始值,从第二个开始都是手动传的参数,还能按需传多个,第2、3、4个甚至更多都可以,函数里按顺序接收就行,传参数的目的就是让过滤逻辑更灵活通用,一个过滤器能适配多种场景。过滤器处理的都是要展示在模板上的值,最终页面显示的是过滤后的值,但不会改变data里的原始值,就是做展示层的格式化,而且过滤器不能通过refs、parent这些获取组件实例的方式调用,因为它没挂载到组件的this实例上,要是想复用过滤逻辑,要么抽成全局过滤器,要么单独抽成方法。另外组件里的filters是对象,键名唯一,不能重名,重名就会覆盖,全局过滤器也没有统一的配置对象,只能多次调用Vue.filter来加多个。

相关推荐
夏幻灵2 小时前
JavaScript this 面试:五种绑定规则、优先级与常见面试陷阱
开发语言·javascript·面试
Lvan的前端笔记2 小时前
docker:每个前端项目一个 Nginx 容器还是只有一个Nginx容器
前端·nginx·docker
三天不学习2 小时前
Egg.js 4 突然爆火,原因是否归结于AI 原生落地需求爆发?
前端·javascript·全栈·egg.js
xcs194053 小时前
前端 vue 的前端页面debugger 进不去
前端·javascript·vue.js
明月_清风4 小时前
Deno 终局来了:从挑战 Node 到被 Cloudflare 收编
前端·后端·node.js
Csvn5 小时前
框架性能优化
前端
雪芽蓝域zzs6 小时前
第 5 节:Marker 点击弹出 InfoWindow 信息窗口
vue.js
回眸&啤酒鸭6 小时前
【回眸】OpenSwarm 多智能体协作系统实战指南
大数据·前端·人工智能
用户69371750013847 小时前
2026,程序员的时代拐点到了
android·前端·后端
大龄秃头程序员7 小时前
一次 iBeacon + BLE 无感解锁方案的实现记录
前端