vue自定义过滤器的创建和使用

1、简单介绍
 
过滤器的作用:实现数据的筛选、过滤、格式化。
 
过滤器的本质是一个有参数,有返回值的方法。
 
过滤器可以用在两个地方:双花括号插值和v-bind表达式(后者从2.1.0+开始支持)。其中’管道’符号后面的是过滤器,前面的是需要格式化的值。
 
<!-- 在双花括号中 -->
{{ message | capitalize }}
 
<!-- 在 `v-bind` 中 -->
<div v-bind:id="rawId | formatId"></div>
 
vue1.*版本是有内置的过滤器,但是vue2.*所有版本都已经没有自带的过滤器了。
 
2、创建和使用
 
组件(局部)过滤器:
methods: {...},
filters: {
  capitalize: function (value) {
    if (!value) return ''
    value = value.toString()
    return value.charAt(0).toUpperCase() + value.slice(1)
  }
},
watch: {...}

 

全局过滤器(1):
Vue.filter('capitalize', function (value) {
  if (!value) return ''
  value = value.toString()
  return value.charAt(0).toUpperCase() + value.slice(1)
})
 
new Vue({
  // ...
})
 
全局过滤器(2):
将所有方法定义在一个文件里面导出:/src/api/filters.js
// 第一个参数都是默认传入的值,第二开始都是手动传入的参数
const test1 = val => {
return val * 2
}
 
const test2 = (val, num = 0) => {
return val * num
}
 
export { test1, test2 }

 

然后在入口文件main.js中引入:
import * as filters from './api/filters'
 
Object.keys(filters).forEach(key => Vue.filter(key, filters[key]))

 

然后再需要的页面使用:
<template>
<div>
<h1>测试filters</h1>
<p>{{ num | test1 }}</p>
<p>{{ num | test2 }}</p>
<p>{{ num | test2(3) }}</p>
<div v-bind:id="num | test2(4)">111111111</div>
</div>
</template>
<script>
export default {
data () {
return {
num: 2
}
}
}
</script>

 

效果如下:
 
posted @ 2018-10-19 14:10  卡布kaka  阅读(1574)  评论(0编辑  收藏  举报