1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title>Title</title>
6 <script type="text/javascript" src="https://unpkg.com/vue/dist/vue.js"></script>
7 </head>
8 <body>
9 <div id="app">
10 <p>{{ msg | msgFormat('mia ', 'san ') | test }}</p>
11 </div>
12
13 <div id="app2">
14 <p>{{ dt | dateFormat('') }}</p>
15 </div>
16 <script>
17 // 定义一个Vue全局过滤器,名字叫 msgFormat
18 Vue.filter('msgFormat',function (msg, arg, arg2) {
19 //字符串的replace方法,第一个参数可以是 字符串/正则,g就是全局
20 return msg.replace(/aaaaa/g, arg + arg2)
21 });
22 //可以定义多个
23 Vue.filter('test', function (msg) {
24 return msg + ' mia'
25 });
26
27 // 创建 Vue 实例,得到 ViewModel
28 var vm = new Vue({
29 el: '#app',
30 data: {
31 msg:"Bayern aaaaa"
32 },
33 methods: {
34
35 }
36 });
37
38
39 //定义私有的过滤器
40 var vm2 = new Vue({
41 el: '#app2',
42 data: {
43 dt:new Date()
44 },
45 methods: {
46
47 },
48 //过滤器,方法都是对象
49 //过滤器调用采用就近原则,如果全局和私有的名称一致了,优先调用私有的过滤器
50 filters: {
51 dateFormat: function (dateStr, pattern = '') {
52 var dt = new Date(dateStr);
53
54 var y = dt.getFullYear();
55 var m = dt.getMonth() + 1;
56 var d = dt.getDate();
57
58
59 if (pattern.toLowerCase() === 'yyyy-mm-dd') {
60 return `${y}-${m}-${d}`;
61 } else {
62 var hh = dt.getHours();
63 var mm = dt.getMinutes();
64 var ss = dt.getSeconds();
65
66 return `${y}-${m}-${d} ${hh}:${mm}:${ss}`;
67
68 }
69 }
70 }
71 })
72 </script>
73
74 </body>
75 </html>
![]()