过滤器filter
详见官网:https://cn.vuejs.org/v2/guide/filters.html
- 用于一些常见的文本格式化
- 可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持)
- 过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示
<!-- 在双花括号中 -->
{{ message | capitalize }}
<!-- 在 `v-bind` 中 -->
<div v-bind:id="rawId | formatId"></div>
- 过滤器可以串联
在下面例子中,filterA 被定义为接收单个参数的过滤器函数,表达式 message 的值将作为参数传入到函数中。然后继续调用同样被定义为接收单个参数的过滤器函数 filterB,将 filterA 的结果传递到 filterB 中;
{{ message | filterA | filterB }}
- 过滤器是 JavaScript 函数,因此可以接收参数
在下面中,filterA 被定义为接收三个参数的过滤器函数。其中 message 的值作为第一个参数,普通字符串 'arg1' 作为第二个参数,表达式 arg2 的值作为第三个参数。其中arg2必须是data中return的值;
{{ message | filterA('arg1', arg2) }}
export default {
data() {
return {
arg2: '爱你'
}
}
}
/* 1.新建一个js文件,里面只写过滤器的主体函数 */
// 三个不同的过滤器的主体函数
function filterOne(value) {
return value
}
function filterTwo(value) {
return value.split('')
}
function filterThree(value) {
return 'I miss you!'
}
export {
filterOne,
filterTwo,
filterThree
}
/* 2.在main.js中进行注册 */
//导入过滤器函数
import * as filters from './assets/filter/index.js';
//注册过滤器:把key值作为过滤器的名字,value值(导入的函数)作主体
Object.keys(filters).forEach(k=>{
Vue.filter(k, filters[k])
})
<!-- 3.在文件中可直接使用 -->
<div>
<p>{{ msg | filterOne | filterTwo | filterThree }}</p>
</div>
<template>
<div>
<p>{{ msg | filterFour | filterFive }}</p>
</div>
</template>
<script>
export default {
name: 'Filter_',
data() {
return {
msg: '我曾经跨过山和大海',
}
},
/* 私有过滤器 */
filters: {
filterFour: function(value) {
return '私有过滤器!'
},
filterFive: function(value) {
return '555555!'
}
}
}
</script>
<style>
</style>
- 当全局过滤器和私有过滤器重名时,会采用私有过滤器.