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 小时前
安卓开发秘籍:解锁10大性能优化秘诀
前端
谁呛我名字3 小时前
JavaScript 类型转换与运算规则
javascript
try2find4 小时前
打印ascii码报错问题
java·linux·前端
郑州光合科技余经理4 小时前
同城O2O海外版二次开发实战:从支付网关到配送算法
开发语言·前端·后端·算法·架构·uni-app·php
冰暮流星5 小时前
javascript事件案例-全选框案例
服务器·前端·javascript
Dillon Dong5 小时前
【系列主题】Next.js 16 + Turbopack 的暗礁:深入剖析 Tailwind v4 的 CSS 模块解析陷阱
javascript·css·容器·turbopack
Csvn5 小时前
前端性能优化实战指南
前端
Moment5 小时前
2026 年,AI 全栈时代到了,前端简历别再只写前端技术了 🫠🫠🫠
前端·后端·面试
糯米团子7495 小时前
Web Worker
开发语言·前端·javascript
freewlt6 小时前
React Server Components 深度解析
前端·react.js·前端框架