Vue 使用三种方式写过滤器

举报
可期 发表于 2021/12/13 22:15:20 2021/12/13
【摘要】 「喜欢是和优点谈恋爱,那么爱就是和缺点过日子啦」@[TOC] 1.全局过滤器这里是一个全局过滤器,可以在全局调用,其中参数value可以收取到属性得到的值然后通过slice(0,4)获取前四位,下面讲解分别使用计算属性 监测属性 fliters局部过滤器实现。Vue.filter('mySlice',function(value){ return value.slice(0...

「喜欢是和优点谈恋爱,那么爱就是和缺点过日子啦」

@[TOC]

1.全局过滤器

这里是一个全局过滤器,可以在全局调用,其中参数value可以收取到属性得到的值然后通过slice(0,4)获取前四位,下面讲解分别使用计算属性 监测属性 fliters局部过滤器实现

Vue.filter('mySlice',function(value){
        return value.slice(0,4)
    })

2.计算属性实现

(1)先创建一个容器,这里我们需要写入过滤器的名来调用过滤器

<div id="root">
 	<h3>现在是:{{fmtTime | mySlice}}</h3>
</div>

(2)这里我们输出现在的时间,然后使用过滤器得到我们想要的结果。
其中 time 这里是一个时间戳。
dayjs 我们是导入到外部库来实现解析时间戳返回一个时间,可以再 Boot CDN 中安装,有兴趣的的可以交接一下,链接在这里:https://www.bootcdn.cn/dayjs/

new Vue({
        el:'#root',
        data:{
            time:'1639377273144' //时间戳
        },
        computed:{
            fmtTime(){
                return dayjs(this.time).format("YYYY年MM月DD日 HH:mm:ss")
            }
        }
    })

3.监测属性实现

(1)这里容器的创建方法和上面一样就不在一一讲解,但是要注意函数名字以及过滤器名。
(2)以下代码我们可以看到大差不差,只是我们使用了不同的方式实现相同的效果。

methods: {
            getFmtTime(){
                return dayjs(this.time).format("YYYY年MM月DD日 HH:mm:ss")
            }
        }

4.filters 局部过滤器

filters:{
            timeFormater(value,str="YYYY年MM月DD日 HH:mm:ss"){
                return dayjs(value).format(str)
            },
            mySlice(value){
                return value.slice(0,4)
            }
        }

我们在内部创建一个过滤器(mySlice),逻辑也是一样,利用slice 属性获取前四位。

解决的过滤器的三种实现方法,让我们来做一个总结:

过滤器:    
        定义:对要显示的数据进行特定格式化后在显示(适用于一些简单的逻辑)
        语法:
            1.注册过滤器:Vue.fliter(name | callbak) 或 new Vue(fliters:{})
            2.使用过滤器:{{xxx | 过滤器名} 或 v-bind:属性='xxx | 过滤器名字'}

        备注:
            1.过滤器也可以接收额外参数,多个过滤器也可以串联
            2.并没有改变原本的数据,是产生新的对应数据
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。