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 小时前
Web学习之用户认证
前端·学习
●VON2 小时前
React Native for OpenHarmony:项目目录结构与跨平台构建流程详解
javascript·学习·react native·react.js·架构·跨平台·von
We་ct2 小时前
LeetCode 36. 有效的数独:Set实现哈希表最优解
前端·算法·leetcode·typescript·散列表
爱吃大芒果2 小时前
Flutter for OpenHarmony 实战:mango_shop 路由系统的配置与页面跳转逻辑
开发语言·javascript·flutter
qq_177767372 小时前
React Native鸿蒙跨平台实现消息列表用于存储所有消息数据,筛选状态用于控制消息筛选结果
javascript·react native·react.js·ecmascript·harmonyos
weixin_395448912 小时前
main.c_cursor_0129
前端·网络·算法
沐雪架构师2 小时前
LangChain 1.0 Agent开发实战指南
开发语言·javascript·langchain
2501_940007893 小时前
Flutter for OpenHarmony三国杀攻略App实战 - 战绩记录功能实现
开发语言·javascript·flutter
摘星编程3 小时前
React Native + OpenHarmony:自定义useEllipsis省略号处理
javascript·react native·react.js