angular js Filter

说说AngularJS中的filter

如果你熟悉AngularJS的话,一定记得其中有一个叫做filter,过滤器的东西。说的简单通俗一点,顾名思义,过滤器就是用来过滤变量值的东西,当然,这里的过滤可以是删除也可以是添加,具体我们会在后面一一讲解。

AngularJS本身为我们提供了不少内建的过滤器,比如说:currency – 用来将变量转换成货币表现形式,例如:

<div>{{ amount | currency}}</div>   

如果此时$scope.amount = 1234.56,那么经过currency过滤的amount就会变为$1,234.56。值得一提的是,过滤器是可以添加参数的,具体添加参数的方式是:

:arg1:arg2  

也就是说,每添加一个参数,就在相应过滤器后面加上一个冒号,然后在冒号后面加上参数。拿上面的currency举例,我们可以为它添加标示符参数,例如:

 <div>{{ amount | currency:"USD$"}}</div>  

假设$scope.amount此时还是1234.56,那么经过currency过滤器的amount变为USD$1,234.56。

AngularJS中为我们提供了一共9个内建的过滤器,分别是currency,date,filter,json,limitTo,lowercase,number,orderBy,uppercase。具体的用法在AngularJS的文档中都有详细说明。但是在具体使用中,我们常常会发现这些过滤器可能不能满足我们比较复杂的要求,这个时候就需要我们来编写自定义过滤器。

编写AngularJS自定义过滤器其实非常简单。如果你写过AngularJS的factory service,一定记得它返回一个对象或者是一个函数,编写自定义过滤器的形式和它非常相像,你在编写的时候,只需要一个带有一个以上参数的函数即可。它的大致形式是这样的:

app.filter('过滤器名称',function(){
    return function(需要过滤的对象,过滤器参数1,过滤器参数2,...){
        //...做一些事情  
        return 处理后的对象;
    }
});     

实在是太简单了对吧。如果还是有点迷惑,我们下面来举几个例子。

例子1 编写过滤器在字符串后面加上感叹号

app.filter('filter1',function(){
    return function(item){
        return item + '!';
    }
});  

实在太简单了,一学就会!item是我们需要处理的那个字符串,所以我们将item的后面加上了一个感叹号然后返回。因此 {{ ‘aaa’ | filter1 }}就会变成’aaa!’。

例子2 编写过滤器,根据参数在字符串后面加上相应个数的感叹号

app.filter('filter2',function(){
    return function(item,num){
        for(var i = 0;i < num;i++){
            item = item + '!';
        }
        return item;
    }
});

太简单了,地球人都知道!

例子3 用过滤器处理一个数组,在数组的每一项后面都加上感叹号

在使用ng-repeat等指令的时候,我们经常需要使用过滤器来对其中的一些项目进行过滤,这里值得注意的一点是,在针对数组进行过滤的时候,返回函数的第一个参数是全部数组,同时最后函数也要返回全部数组。比如:

app.filter('filter3',function(){
    return function(items){
        angular.forEach(items,function(item){
            item = item + '!'
        });
        return items;
    }
});  

如果我们在HTML中这样使用:

<ul>
    <li ng-repeat='item in items | filter3'> {{item}} </li>
</ul>

而$scope.items = [’a’,’b’,’c’],那么最终的结果是:

<ul>
    <li>a!</li>
    <li>b!</li>
    <li>c!</li>
</ul>  

非常简单对吧!

除了上面提到的意外,我们还可以通过将$filter注入控制器中,以便我们可以在控制器中使用AngularJS内建的或者我们自定义的过滤器,具体的使用方法为:

app.controller('myCtrl',function($scope,$filter){
    ...

    $filter('过滤器名称')(需要过滤的对象,参数1,参数2,...); 

    ...
});  

比如我们就可以这样使用:

$filter('currency')($scope.amount,'$USD');  

过滤器看起来简单,但是在显示的AngularJS应用开发中确实不可或缺的一个东西。为了让我们更加顺手的开发AngularJS应用,少年们认真学好过滤器吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值