Vue - 过滤器

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

 

3、过滤器:

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

 

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

posted @ 2016-12-27 16:15  ^^-^^-  阅读(8392)  评论(0编辑  收藏  举报