概念:
过滤器,本质上都是函数。其作用在于用户输入数据后,进行处理,并返回数据结果。
语法:
使用管道符 | 进行连接
样例
{{ 'abc' | uppercase }} //'abc' => 'ABC'
注意:
在vue.js官方文档中提到:
vue.js支持在任何出现表达式的地方添加过滤器,还可以支持参数,参数之间用空格分割;并且可以支持链式调用
样例
{{ message | dilterFunction "arg1" arg2 }}
敲黑板:过滤器函数将始终一表达式的值作为第一个参数。带引号的参数会被当成字符串处理,而不带引号的参数会被当作数据属性名称来处理
vue.js内置过滤器
字母操作
capitalize(首字母大写)
<div class="test">
{{message | capitalize}}
</div>
<script type="text/javascript">
var myVue = new Vue({
el: ".test",
data: {
message: "abc"
}
})
</script>
//结果:"abc" => "Abc"
uppercase(全部大写)
// 初始message:abc
{{message | uppercase}}
// 上面代码输出:ABC
lowercase(全部小写)
// 初始message:ABC
{{message | lowercase}}
// 上面代码输出:abc
currency(输出金钱以及小数点)
第一个参数 {String} [货币符号] - 默认值: '$'
第二个参数 {Number} [小数位] - 默认值: 2
<div class="test">
{{message | currency}} // 输出$520.13
{{message | currency '¥' "2"}} //输出 $520.13
</div>
<script type="text/javascript">
var myVue = new Vue({
el: ".test",
data: {
message: "520.1314"
}
})
</script>
json过滤器
<div class="test">
<pre>{{ user | json 4 }}</pre>
</div>
<script type="text/javascript">
var myVue = new Vue({
el: ".test",
data: {
user:{'name':'hfgb','age':26}
}
})
</script>
结果:
{
'name' : 'hfgb',
'age' : 26
}
限制🚫
limitBy(排序)
- 限制:需在v-for(即数组)里面使用
第一个参数:{Number} 取得数量
第二个参数:{Number} 偏移量
<div class="test">
<ul v-for="item in lili | limitBy 10">
<li>{{item}}</li>
输出1 2 3 4 5 6 7 8 9 10
</ul>
<ul v-for="item in lili | limitBy 10 3">
<li>{{item}}</li>
输出 4 5 6 7 8 9 10 11 12 13
</ul>
</div>
<script type="text/javascript">
var myVue = new Vue({
el: ".test",
data: {
lili: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
}
})
</script>
filterBy(过滤)
- 限制:需在v-for(即数组)里面使用
第一个参数: {String | Function} 需要搜索的字符串
第二个参数: in (可选,指定搜寻位置)
第三个参数: {String} (可选,数组格式)
<div class="test">
<ul v-for="item in lili | filterBy 'o' ">
<li>{{item}}</li>
输出oi oa lo ouo oala
</ul>
<ul v-for="item in man | filterBy 'l' in 'name' ">
<li>{{item.name}}</li>
输出lily lucy
</ul>
<ul v-for="item in man | filterBy 'l' in 'name' 'dada' ">
<li>{{item.name+"+"+item.dada}}</li>
输出lily+undefined lucy+undefined undefined+lsh
</ul>
</div>
<script type="text/javascript">
var myVue = new Vue({
el: ".test",
data: {
lili: ["oi", "oa", "ll", "lo" ,"ouo" ,"kk" ,"oala"],
man: [ //此处注意man是数组,不是对象
{name: "lily"},
{name: "lucy"},
{name: "oo"},
{dada: "lsh"},
{dada: "ofg"}
]
}
})
</script>
orderBy(排序)
orderBy =>sort()函数
- 限制:需在v-for(即数组)里面使用
第一个参数: {String | Array | Function} 需要搜索的字符串
第二个参数: {String} 可选参数 order 决定结果升序(order >= 0)或降序(order < 0),默认是升序
<div class="test">
{{'2018-11-16 18:12:15'|formatDate}}
</div>
<script type="text/javascript">
var myVue = new Vue({
el: ".test",
methods: {
},
filters:{
formatDate (val) {
return moment(val).format('YYYY-MM-DD');
// 这里用到了moment.js
}
}
})
</script>
debounce(事件延时)
- 限制: 需在@里面使用
- 参数:{Number} [wait] - 默认值: 300
- 功能:包装处理器,让它延迟执行 x ms, 默认延迟 300ms。包装后的处理器在调用之后至少将延迟 x ms, 如果在延迟结束前再次调用,延迟时长重置为 x ms。
<div class="test">
<button id="btn" @click="doSomeThing | debounce 10000">点击我</button>
</div>
<script type="text/javascript">
var myVue = new Vue({
el: ".test",
methods: {
doSomeThing: function () {
// do something
}
}
})
</script>







网友评论