当前位置:首页 > VUE

vue filter 实现

2026-02-10 11:02:06VUE

Vue 过滤器(Filter)实现方法

Vue 过滤器用于格式化文本,常用于日期、货币等场景。Vue 2.x 原生支持过滤器,Vue 3.x 已移除,但可通过全局属性或组合式 API 模拟类似功能。

Vue 2.x 过滤器实现

全局过滤器注册main.js 或入口文件中定义全局过滤器:

Vue.filter('capitalize', function(value) {
  if (!value) return ''
  return value.toString().charAt(0).toUpperCase() + value.slice(1)
})

局部过滤器注册 在组件选项中定义:

filters: {
  currency(value, symbol = '$') {
    return symbol + value.toFixed(2)
  }
}

模板中使用

<p>{{ message | capitalize }}</p>
<p>{{ price | currency('¥') }}</p>

Vue 3.x 替代方案

全局属性模拟main.js 中:

app.config.globalProperties.$filters = {
  dateFormat(value) {
    return new Date(value).toLocaleDateString()
  }
}

组合式 API 实现 创建可复用函数:

// utils/filters.js
export const useFilters = () => {
  const truncate = (text, length = 30) => {
    return text.length > length 
      ? text.substring(0, length) + '...' 
      : text
  }
  return { truncate }
}

组件中使用

<script setup>
import { useFilters } from './utils/filters'
const { truncate } = useFilters()
</script>

<template>
  <p>{{ truncate(longText) }}</p>
</template>

过滤器链式调用

Vue 2.x 支持多个过滤器串联:

vue filter 实现

<p>{{ text | filterA | filterB }}</p>

注意事项

  • Vue 3 移除过滤器主要因为其功能与计算属性/方法重叠
  • 复杂逻辑建议使用计算属性替代
  • 过滤器应保持纯函数特性,避免副作用

标签: vuefilter
分享给朋友:

相关文章

vue实现拍照

vue实现拍照

Vue实现拍照功能 在Vue中实现拍照功能通常需要结合浏览器的MediaDevices API和Canvas元素。以下是具体实现方法: 安装依赖(可选) 如果需要更简单的封装,可以安装vue-web…

vue 实现单选

vue 实现单选

使用 v-model 绑定单选值 在 Vue 中,可以通过 v-model 绑定单选按钮的值。定义一个响应式数据(如 selectedOption),并将其与单选按钮的 value 属性关联。…

vue tab实现

vue tab实现

Vue Tab 实现方法 使用动态组件实现 Tab 在 Vue 中可以通过动态组件 <component :is="currentTab"> 结合 v-for 和 v-bind 实现 Ta…

vue实现导出

vue实现导出

Vue 实现导出功能的方法 在 Vue 项目中实现导出功能通常涉及将数据导出为 Excel、CSV 或其他格式。以下是几种常见的实现方式: 使用 xlsx 库导出 Excel 安装 xlsx 库:…

vue 实现跳转

vue 实现跳转

Vue 实现页面跳转的方法 在 Vue 中实现页面跳转通常可以通过以下几种方式实现,具体选择取决于项目需求和技术栈(如是否使用 Vue Router)。 使用 Vue Router 进行编程式导航…

vue实现尺子

vue实现尺子

Vue 实现尺子组件 实现一个尺子组件可以通过 Canvas 或纯 CSS 完成。以下是两种常见实现方式: 使用 Canvas 绘制尺子 通过 Canvas 动态绘制刻度线和数字,适合需要高精度或动…