Vue - 过滤器

时间:2022-05-07 10:23:23

1、内部过滤器

1):字母操作: ---- 针对字符串

A:capitalize

B:uppercase

C:lowercase

2):json过ingfy滤器,可将表达式的值转化为Json字符串,本质上是ISON.stringfy(),接受一个Number参数,用于决定转化后的JSON字符串的缩进距离,不输默认是2

<pre>{{didifamily | json 4}}</pre>

3):limitBy,filterBy,orderBy处理并返回过滤后的数组,注意:该3个过滤器处理的表达式必须是数组

limitBy:

<!-- limitBy 限制数组为开始的前N个元素 -->
<!-- N由前一个参数决定,后一个参数可选,用于指定开始的偏移量,默认是0 --> <!-- 只显示开始的前10个参数 -->
<div v-for="item in items | limitBy 10"></div> <!-- 显示第5到15个元素 -->
<div v-for="item in items | limitBy 10 5"></div>

------------------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------

filterBy:

A:使用静态参数

<!-- 字符串 -->
<div v-for="item in items | filterBy 'hello'"></div> <!-- 单个对象 -->
<div v-for="item in items | filterBy 'hello' in 'name'"></div> <!-- 多个对象,用空格分离 -->
<div v-for="item in items | filterBy 'hello' in 'name' 'nickname'"></div> <!-- 数组 -->
<!-- fileds = ['a','b'] -->
<div v-for="item in items | filterBy 'a' in fileds"></div>

B:使用动态数值作为搜索条件

<div id="filter">
<input v-model="name"> <ul>
<li v-for="user in users | filterBy name in 'name">{{user.name}}</li>
</ul>
</div> <script type="text/javascript">
new Vue({
el : '#filter', data : {
name : '',
user : [
{name : 'a'},
{name : 'b'}
]
}
})
</script>

------------------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------

orderBy:

<!-- 传入参数为字符串,可同时按照多个字符串,字符串之间用空格隔开 -->
<ul>
<li v-for="user in users | orderBy 'a' 'b' 'c'">
{{user.a}} {{user.b}} {{user.c}}
</li>
</ul> <!-- 将参数存入数组中 -->
<!-- sort = ['a','b','c'] -->
<ul>
<li v-for="user in users | orderBy sort">
{{user.a}} {{user.b}} {{user.c}}
</li>
</ul>

4):current过滤器:将数值转化为货币形式输出,第一个参数接受类型为string,默认值是$  ;  第二个参数接受类型为Number的小数位,如不输入默认是2

注意:第一个参数采取默认,而第二个参数需要修改小数位,则第一个参数不省略,一定要填上,即使是默认也要填上

{{amout | current}} {{amout | current '$'}} {{amout | current '$' 3}}

5):debounce过滤器

2、自定义过滤器

1):定义:Vue.filter(ID,function(){})

2):单个参数

<span v-text="message | reverse"></span>

<script type="text/javascript">
Vue.filter('reverse',function(value){
return value.split('').reverse().join('');
})
</script>

3):多参数

<span v-text="message | wrap 'before' 'after' "></span>
<!-- hello --> ==> 'before hello after' <script type="text/javascript">
Vue.filter('wrap',function(value,begin,end){
return begin + value + end
})
</script>

4):动态参数:如果过滤器没有用引号包裹,则他会在当前VM的作用域内动态计算  , 过滤器函数的this始终指向调用它的VM

Vue - 过滤器

3、过滤器:

1):自定义filter可以写在全局下:

Vue - 过滤器

2):使用orderBy以及filterBy进行过滤的时候,如果将$index作为参数,那么$index是根据过滤后的顺序