Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化。过滤器可以用在两个地方:**双花括号插值和 `v-bind` 表达式** (后者从 2.1.0+ 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示:
``` html
<!-- 在双花括号中 -->
{{ message | capitalize }}
<!-- 在 `v-bind` 中 -->
<div v-bind:id="rawId | formatId"></div>
```
你可以在一个组件的选项中定义本地的过滤器:
``` js
filters: {
capitalize: function (value) {
if (!value) return ''
value = value.toString()
return value.charAt(0).toUpperCase() + value.slice(1)
}
}
```
或者在创建 Vue 实例之前全局定义过滤器:
``` js
Vue.filter('capitalize', function (value) {
if (!value) return ''
value = value.toString()
return value.charAt(0).toUpperCase() + value.slice(1)
})
new Vue({
// ...
})
```
下面这个例子用到了 `capitalize` 过滤器:
{% raw %}
<div id="example-1" class="demo">
<input type="text" v-model="message">
<p>{{ message | capitalize }}</p>
</div>
<script>
new Vue({
el: '#example-1',
data: function () {
return {
message: 'john'
}
},
filters: {
capitalize: function (value) {
if (!value) return ''
value = value.toString()
return value.charAt(0).toUpperCase() + value.slice(1)
}
}
})
</script>
{% endraw %}
过滤器函数总接收表达式的值 (之前的操作链的结果) 作为第一个参数。在上述例子中,`capitalize` 过滤器函数将会收到 `message` 的值作为第一个参数。
过滤器可以串联:
``` html
{{ message | filterA | filterB }}
```
在这个例子中,`filterA` 被定义为接收单个参数的过滤器函数,表达式 `message` 的值将作为参数传入到函数中。然后继续调用同样被定义为接收单个参数的过滤器函数 `filterB`,将 `filterA` 的结果传递到 `filterB` 中。
过滤器是 JavaScript 函数,因此可以接收参数:
``` html
{{ message | filterA('arg1', arg2) }}
```
这里,`filterA` 被定义为接收三个参数的过滤器函数。其中 `message` 的值作为第一个参数,普通字符串 `'arg1'` 作为第二个参数,表达式 `arg2` 的值作为第三个参数。
- 写在前面
- 基础
- 安装
- 介绍
- Vue实例
- 模板语法
- 计算属性和侦听器
- Class 与 Style 绑定
- 条件渲染
- 列表渲染
- 事件处理
- 表单输入绑定
- 组件基础
- 深入了解组件
- 组件注册
- Prop
- 自定义事件
- 插槽
- 动态组件 & 异步组件
- 处理边界情况
- 过渡 & 动画
- 进入/离开 & 列表过渡
- 状态过渡
- 可复用性 & 组合
- 混入
- 自定义指令
- 渲染函数 & JSX
- 插件
- 过滤器
- 工具
- 生产环境部署
- 单文件组件
- 单元测试
- TypeScript 支持
- 规模化
- 路由
- 状态管理
- 服务端渲染
- 内在
- 深入响应式原理
- 迁移
- 从 Vue 1.x 迁移
- 从 Vue Router 0.7.x 迁移
- 从 Vuex 0.6.x 迁移到 1.0
- 更多
- 对比其他框架
- 加入 Vue.js 社区
- 开发团队