在 Vue.js 中,过滤器可以用于一些常见的文本格式化。过滤器可以用在两个地方:双花括号插值和 v-bind 表达式。
过滤器的定义方式:
js
// 全局过滤器
Vue.filter('myFilter', function (value) {
// 返回处理后的值
})
// 局部过滤器
filters: {
'myFilter': function (value) {
// 返回处理后的值
}
}
使用过滤器的例子:
html
<!-- 在双花括号中 -->
{{ message | myFilter }}
<!-- 在 v-bind 指令中 -->
<p v-bind:id="id | myFilter">...</p>
过滤器的示例代码:
js
// 全局过滤器
Vue.filter('capitalize', function (value) {
if (!value) return ''
value = value.toString()
return value.charAt(0).toUpperCase() + value.slice(1)
})
// 使用过滤器
{{ message | capitalize }}
// 局部过滤器
filters: {
'normalize': function (value) {
return value.toLowerCase().replace(/\s+/g, '-')
}
}
<p v-bind:id="id | normalize">...</p>
过滤器的一些注意点:
- 过滤器应该被添加在 JavaScript 表达式的尾部,由“|”符号指示。
- 可以串联多个过滤器,按顺序调用。
- 过滤器函数总接收表达式的值作为第一个参数。
- 过滤器可以用于常见的数据格式化,但复杂的业务逻辑应在计算属性中实现。
- 在组件选项中定义的本地的过滤器只作用于该组件及其子组件。
Vue.js 的过滤器为我们提供了一种方便的方式来格式化常见的文本和值。但是过度使用过滤器,也会使逻辑变得复杂难以理解。