过滤器:
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> |