Vue 过滤器

定义:Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化。过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 (后者从 2.1.0+ 开始支持)。过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号指示:

一、定义全局过滤器:

JS部分:

1 var app = new Vue({
2     el: "#app",
3     data() {
4         return {
5             msg: "我是谁,我从哪里来,我又要往哪里去"
6         }
7     }
8 });
 1 // 定义一个过滤器,没有传入参数
 2 // 将 data 字符串里的 “哪里”,全部替换成 “这里”
 3 Vue.filter("msgFmt", function (data) {
 4     return data.replace(/哪里/g, "这里");
 5 });
 6 
 7 // 有参数的过滤器
 8 // 将 data 字符串里的 “哪里”,全部替换成 传入的 arg 字符串
 9 Vue.filter("msgFmt1", function (data,arg) {
10     return data.replace(/哪里/g, arg);
11 });

调用:

1     <div id="app">
2         <p>{{ msg | msgFmt }}</p>
3 
4         <p>{{ msg | msgFmt1("天堂") }}</p>
5     </div>

显示结果:

 二、定义局部过滤器

局部过滤器,只能在VM控制得范围内起作用。

JS部分:

 1     var app1 = new Vue({
 2         el: "#app1",
 3         data() {
 4             return {
 5                 date: new Date()
 6             }
 7         },
 8         filters:{
 9             dateFmt(dateStr,fmt=""){
10                 var date = new Date(dateStr)
11 
12                 var y = date.getFullYear();
13                 var m = (date.getMonth()+1).toString().padStart(2,"0");
14                 var d = date.getDate().toString().padStart(2,'0');
15 
16                 if(fmt.toLowerCase()=="yyyy-mm-dd"){
17                     return `${y}-${m}-${d}`;
18                 }else{
19                     var h = date.getHours().toString().padStart(2,"0");
20                     var min = date.getMinutes().toString().padStart(2,"0");
21                     var s = date.getSeconds().toString().padStart(2,"0");
22 
23                     return `${y}-${m}-${d} ${h}:${min}:${s}`;
24                 }
25             }
26         }
27     });

调用:

1     <div id="app1">
2         <p>{{ date | dateFmt }}</p>
3 
4         <p>{{ date | dateFmt("yyyy-MM-dd") }}</p>
5     </div>

显示:

注意:当局部过滤器和全局过滤器,名字相同时,局部过滤器会覆盖掉全局的过滤器。

原文地址:https://www.cnblogs.com/chenzongyan/p/10263210.html