Vue2 之 过滤器

简介: Vue2 之 过滤器

1、过滤器简介

1.1、全局过滤器与局部过滤器

过滤器本质上是一个函数,与自定义指令类似。

       全局过滤器

Vue.filter(id, [definition])

     局部过滤器

new Vue({
  el: '#app',
  filters: {
      definition(value): {
          ...
          }
      }
  })

案例:将字符串首字母转换为大写字母的全局过滤器

Vue.filter('capitalize', function (value) {
        if (!value) return '';
        value = value.toString();
        return value.charAt(0).toUpperCase() + value.slice(1);
    })

如果换成局部过滤器

let vm = new Vue({
    el: '#app',
    data: { // 参数定义,字典形式
    },
    computed: { // 计算属性,多次调用,只计算一次
    },
    methods: { // 普通方法,多次调用,多次计算
    },
    filters: { // 过滤器
        capitalize(value) {
            if (!value) return '';
            value = value.toString();
            return value.charAt(0).toUpperCase() + value.slice(1);
        }
    }
})

注意:

  1. 当全局过滤器和局部过滤器重名,会采用局部过滤器
  2. 与自定义命令一样,全局过滤器可以在任何 Vue 实例的模板中使用,而局部过滤器只能在该实例绑定的视图中使用

过滤器可以使用在两个地方:

   双花括号:{{ 变量 | 过滤器 }}

   v-bind 表达式:v-bind:href=“变量 | 过滤器”

2、过滤器的参数

过滤器函数总是接收表达式的值作为第一个参数,过滤器本质上是一个 JS 函数,自然可以接收多个参数。


   不建议把过滤器功能做的很复杂,这违背了过滤器的设计初衷,比如:Vue.filter(‘format’, function (value, …params) {…})


实例:为表达式的值添加前后缀的过滤器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <h2>过滤器</h2>
    <!-- 输出:vue-filters.js -->
    <p>{{ filename | format('vue', suffix) }}</p>
</div>
<script src="VueJs/vue.js"></script>
<script>
    Vue.filter('format', function (value, prefix, suffix) {
        if (!value) return '';
        value = value.toString();
        return prefix + "-" + value + "." + suffix;
    })
    let vm = new Vue({
        el: '#app',
        data: {
            filename: 'filters',
            suffix: 'js'
        },
        computed: { // 计算属性,多次调用,只计算一次
        },
        methods: { // 普通方法,多次调用,多次计算
        },
        filters: { // 过滤器
        }
    })
</script>
</body>
</html>

3、过滤器的串联

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .profile {}
    </style>
</head>
<body>
<div id="app">
    <h2>过滤器</h2>
    <!--  输出结果:DLROW OLLEH  -->
    <p>{{ message | uppercase | reverse }}</p>
</div>
<script src="VueJs/vue.js"></script>
<script>
    Vue.filter('uppercase', function (value) {
        if (!value) return '';
        value = value.toString();
        return value.toUpperCase();
    })
    Vue.filter('reverse', function (value) {
        if (!value) return '';
        value = value.toString();
        return value.split('').reverse().join('');
    })
    let vm = new Vue({
        el: '#app',
        data: {
            message: 'hello world'
        },
        computed: { // 计算属性,多次调用,只计算一次
        },
        methods: { // 普通方法,多次调用,多次计算
        },
        filters: { // 局部过滤器
        }
    })
</script>
</body>
</html>
相关文章
|
JavaScript
vue--过滤器
vue--过滤器
|
JavaScript 前端开发 开发者
Vue----过滤器(Vue3弃用)
Vue----过滤器(Vue3弃用)
|
JavaScript 开发者
24-Vue之过滤器基本用法
24-Vue之过滤器基本用法
|
4月前
|
JavaScript 数据处理 UED
|
4月前
|
JavaScript 前端开发
vue如何使用路由拦截器
vue如何使用路由拦截器
49 0
|
4月前
|
存储 JavaScript 前端开发
vue拦截器是什么,如何使用
vue拦截器是什么,如何使用
47 0
|
9月前
【Vue2.0】—过滤器(七)
【Vue2.0】—过滤器(七)
|
11月前
|
存储 JavaScript 前端开发
【Vue2.0源码学习】过滤器篇
【Vue2.0源码学习】过滤器篇
32 0
|
11月前
|
JavaScript
【vue用法】Vue过滤器 filter
【vue用法】Vue过滤器 filter
68 0
|
JavaScript 前端开发 API