当前位置:首页 » 《随便一记》 » 正文

Vue3 之 过滤器

4 人参与  2024年03月26日 15:05  分类 : 《随便一记》  评论

点击全文阅读


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);        }    }})

 

注意:

当全局过滤器和局部过滤器重名,会采用局部过滤器与自定义命令一样,全局过滤器可以在任何 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>


点击全文阅读


本文链接:http://zhangshiyu.com/post/85952.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1