03-过滤器

135 阅读1分钟

过滤器

过滤器(Filters)是 vue 为开发者提供的功能,常用于文本的格式化。过滤器可以用在两个地方:插值表达式和 v-bind 属性绑定。

过滤器应该被添加在 JavaScript 表达式的尾部,由“管道符”进行调用,示例代码如下:

<body>
    <div id="app">
        <p>message 的值是{{message | capi}}</p>
    </div>
    <script src="./lib/vue-2.6.12.js"></script>
    <script>
        const vm = new Vue({
            el:'#app',
            data:{
                message:'hello vue'
            },
            // 过滤器函数必须被定义到 filters 节点之下
            filters:{ 
                // 过滤器函数形参中的 val 永远都是管道符前面的那个值
                capi(val){
                    // 强调过滤器中一定要有一个返回值
                    const first = val.charAt(0).toUpperCase()
                    // 字符串的 slice 方法,可以截取字符串,从指定索引往后截取
                    const other = val.slice(1)
                    return first + other
                }
            }
        })
    </script>
</body>
message 的值是Hello vue

私有过滤器和全局过滤器

在 filters 节点下定义的过滤器,称为“私有过滤器”,因为它只能在当前 vm 实例所控制的 el 区域内使用。

如果希望在多个 vue 实例之间共享过滤器,则可以按照如下的格式定义全局过滤器:

// 使用 Vue.filter() 定义全局过滤器
        Vue.filter('capi',function(str){
            const first = str.charAt(0).toUpperCase()
            const other = str.slice(1)
            return first + other + '~~~'
        })

过滤器的注意点:

1.要定义到 filters 节点下,本质是一个函数

2.在过滤器函数中,一定要有 return 值

3.在过滤器的形参中,就可以获取到“管道符”前面待处理的那个值

4.如果全局过滤器和私有过滤器名字一致,此时按照“就近原则”,调用的是“私有过滤器”。

利用过滤器进行时间格式化

day.js官网 https://dayjs.fenxianglu.cn/

未时间格式化:Thu Dec 22 2022 16:08:26 GMT+0800 (中国标准时间)

时间格式化后:2022-12-22 16:08:26
<body>
    <div class="app">
        <p>未时间格式化:{{time}}</p>
        <p>时间格式化后:{{time | dateFormat}}</p>
    </div>
    <script src="./lib/dayjs.min.js"></script>
    <script src="./lib/vue-2.6.12.js"></script>
    <script>
        // 定义格式化时间过滤器
        Vue.filter('dateFormat',function(time){
            const datestr = dayjs(time).format('YYYY-MM-DD HH:mm:ss')
            return datestr
        })
        const vm = new Vue({
            el:'.app',
            data:{
                time:new Date()
            }
        })
    </script>
</body>

连续调用多个过滤器

过滤器传参

过滤器的本质是 JavaScript 函数,因此可以接收参数,格式如下: