2-04-过滤器

一、什么是过滤器

过滤器(Filters)是vue为开发者提供的功能,常用于文本格式化,

二、如何使用过滤器

过滤器可以用在两个地方:插值表达式和v-bind属性绑定。

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

更详细的示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<body>

<div id="app">

<p>{{ message | capi }}</p>

</div>

</body>

<script src="./vue.js"></script>

<script>

new Vue({

el: "#app",

data: {

message: "hello vue.js"

},

filters: {

capi(val) {

const first = val.charAt(0).toUpperCase();

const other = val.slice(1);

return first + other;

}

}

});

</script>

三、全局过滤器

以上在filters节点下定义的过滤器成为私有过滤器,只能作用于vm实例中el所指定的元素内。

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

四、注意点

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

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

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

  • 如果全局过滤器和私有过滤器名字一致,此时按照”就近原则”,即优先私有过滤器

五、使用dayjs.min.js格式化时间

dayjs.min.js
是一个时间相关的统一解决库,可以很简单地格式化Date()对象,转换成易读的时间格式。

具体使用方法可见官方文档

以下展示格式化的使用方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<body>

<div id="app">

<!-- <p>{{ new Date() | dateformat }}</p> -->

<p>{{ time | dateformat }}</p>

</div>

</body>

<script src="./vue.js"></script>

<script src="./dayjs.min.js"></script>

<script>

Vue.filter('dateformat', function(time) {

return dayjs(time).format('YYYY-MM-DD HH:mm:ss')

});

new Vue({

el: "#app",

data: {

time: new Date()

}

});

</script>

六、连续调用多个过滤器

过滤器可以串联地进行调用,例如:

七、过滤器传参

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

八、过滤器的兼容性

过滤器仅在vue2.x和vue1.x中受支持,在vue3.x的版本中剔除了过滤器相关的功能。

在企业项目中开发中:

  • 如果使用的是2.x版本的vue,则依然可以使用过滤器相关的功能

  • 如果项目已经升级到了3.x版本的vue,官方建议使用计算属性或方法代替被剔除的过滤器功能

具体的迁移指南,请参考vue3.x官方文档给出的说明:

https://v3.vuejs.org/guide/migration/filters.html#global-filters


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!