过滤器:
vue提供过滤器:
capitalize uppercase currency....
1
2
3
|
< div id = "box" > {{msg|currency ¥}} </ div > |
debounce 配合事件,延迟执行
1
2
3
|
< div id = "box" > < input type = "text" @ keyup = "show | debounce 2000" > </ div > |
数据配合使用过滤器:
limitBy 限制几个
limitBy 参数(取几个)
limitBy 取几个 从哪开始
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<div id= "box" > <ul> <!--取2个--> <li v- for = "val in arr | limitBy 2" > {{val}} </li> <br/> <br/> <!--取2个,从第arr.length-2个开始取--> <li v- for = "val in arr | limitBy 2 arr.length-2" > {{val}} </li> </ul> </div> <script> var vm= new Vue({ data:{ arr:[1,2,3,4,5] }, methods:{ } }).$mount( ‘#box‘ ); </script> |
vue插件filterBy 过滤数据
filterBy ‘谁‘
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<div id= "box" > <input type= "text" v-model= "a" > <ul> <li v- for = "val in arr | filterBy a" > {{val}} </li> </ul> </div> <script> var vm= new Vue({ data:{ arr:[ ‘width‘ , ‘height‘ , ‘background‘ , ‘orange‘ ], a: ‘‘ }, methods:{ } }).$mount( ‘#box‘ ); </script> |
angular orderBy 排序
orderBy 谁 1/-1
1 -> 正序
2 -> 倒序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
<div id= "box" > <input type= "text" v-model= "a" > <ul> <li v- for = "val in arr | orderBy -1" > {{val}} </li> </ul> </div> <script> var vm= new Vue({ data:{ arr:[ ‘width‘ , ‘height‘ , ‘background‘ , ‘orange‘ ], a: ‘‘ }, methods:{ } }).$mount( ‘#box‘ ); </script> |
自定义过滤器: model ->过滤 -> view
1
2
|
Vue.filter(name, function (input){ }); |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<div id= "box" > {{a | toDou 1 2}} </div> <script> Vue.filter( ‘toDou‘ , function (input,a,b){ alert(a+ ‘,‘ +b); return input<10? ‘0‘ +input: ‘‘ +input; }); var vm= new Vue({ data:{ a:9 }, methods:{ } }).$mount( ‘#box‘ ); </script> |
时间转化器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<div id= "box" > {{a | date}} </div> <script> Vue.filter( ‘date‘ , function (input){ var oDate= new Date(input); return oDate.getFullYear()+ ‘-‘ +(oDate.getMonth()+1)+ ‘-‘ +oDate.getDate()+ ‘ ‘ +oDate.getHours()+ ‘:‘ +oDate.getMinutes()+ ‘:‘ +oDate.getSeconds(); }); var vm= new Vue({ data:{ a:Date.now() //返回1970 年 1 月 1日午夜与当前日期和时间之间的毫秒数。 }, methods:{ } }).$mount( ‘#box‘ ); </script> |
50、选择器过滤html标记
双向过滤器:*
1
2
3
4
5
6
7
8
|
Vue.filter( ‘filterHtml‘ ,{ read: function (input){ //model-view return input.replace(/<[^<+]>/g, ‘‘ ); }, write: function (val){ //view -> model return val; } }); |
数据 -> 视图
model -> view
view -> model
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
|
<!DOCTYPE html> <html lang= "en" > <head> <meta charset= "UTF-8" > <title></title> <style> </style> <script src= "vue.js" ></script> <script> //<h2>welcome</h2> Vue.filter( ‘filterHtml‘ ,{ read: function (input){ //model-view alert(1); return input.replace(/<[^<]+>/g, ‘‘ ); }, write: function (val){ //view -> model console.log(val); return val; } }); window.onload= function (){ var vm= new Vue({ data:{ msg: ‘<strong>welcome</strong>‘ } }).$mount( ‘#box‘ ); }; </script> </head> <body> <div id= "box" > <input type= "text" v-model= "msg | filterHtml" > <br> {{msg | filterHtml}} </div> </body> </html> |
原文:https://www.cnblogs.com/good10000/p/10592561.html