# Vue2 过滤器(Filter)使用指南 ## 一、基本概念 过滤器(Filters)是Vue2中用于文本格式化处理的特殊函数,可以在模板中使用管道符(`|`)对数据进行转换处理。 ## 二、代码示例解析 ```html

现在是:{{time | timeFormater}}

现在是:{{time | timeFormater("YYYY年MM月DD日 HH:mm:ss")}}

现在是:{{time | timeFormater("YYYY年MM月DD日 HH:mm:ss") | timeFormaterSlice}}

使用全局过滤器:{{message | globeTimeFormaterSlice}}

``` ## 三、核心特性 ### 1. 过滤器类型 | 类型 | 定义位置 | 作用域 | 示例 | | ---------- | ---------------------- | -------- | --------------------------- | | 局部过滤器 | Vue实例的`filters`选项 | 当前组件 | `{{ data | localFilter }}` | | 全局过滤器 | `Vue.filter()` | 所有组件 | `{{ data | globalFilter }}` | ### 2. 使用方式 | 方式 | 语法 | 说明 | | -------- | --------------------------------- | ------------------ | | 基本使用 | `{{ data | filter }}` | 单个过滤器 | | 传参使用 | `{{ data | filter(arg1, arg2) }}` | 可传递额外参数 | | 链式调用 | `{{ data | filter1 | filter2 }}` | 多个过滤器依次处理 | ## 四、最佳实践 ### 1. 命名规范 - 使用动词+名词形式(如`formatDate`、`truncateText`) - 全局过滤器加前缀(如`globe_`)避免命名冲突 ### 2. 适用场景 - 文本格式化(日期、货币等) - 数据简单转换(截取、大小写转换等) - 显示内容的修饰(添加前缀/后缀) ### 3. 注意事项 - **不能**在`v-model`中使用 - **避免**复杂业务逻辑,复杂处理应使用计算属性 - **推荐**纯函数实现,不要修改原始数据 ## 五、高级用法 ### 1. 动态过滤器名 ```javascript filters: { dynamicFilter(val, filterName) { return this[filterName](val); } } ``` ### 2. 过滤器工厂函数 ```javascript function createPrefixFilter(prefix) { return function(val) { return prefix + val; } } Vue.filter('withPrefix', createPrefixFilter('Info: ')); ``` ### 3. 结合计算属性使用 ```javascript computed: { formattedTime() { return this.$options.filters.timeFormater(this.time); } } ``` ## 六、与Vue3的区别 | 特性 | Vue2 | Vue3 | | ---------- | ------ | ----------------- | | 过滤器支持 | ✅ 支持 | ❌ 移除 | | 替代方案 | - | 使用方法/计算属性 | ## 七、常见问题 1. **为什么过滤器不生效?** - 检查过滤器名称拼写 - 确认是否在正确的作用域定义 - 确保返回值不是undefined 2. **如何调试过滤器?** ```javascript filters: { debugFilter(val) { console.log('Filter input:', val); return val; } } ``` 3. **过滤器能接收多个参数吗?** ```html {{ data | filter(arg1, arg2) }} ```