AngularJS Filter过滤器详情

前言

这次系统学习了filter,特地整理了一下filter,因为它确实带来了很多便利。另外它包含自带的filter,也可以自定义

Filter作用

  • 在表达式中过滤变量的值,包括数组、字符串等
  • 格式化

Filter使用方法

在表达式中应用Filters (过滤器),需要遵循格式如下:
{{ expression | filter }}	即	{{ 表达式 | 过滤器 }}

输出结果中应用Filters

其实就是Filter的叠加--前一filter的输出结果作为后一filter的输入数据源,需要遵循格式如下:
{{ expression | filter1 | filter2 | ...}}   即  表达式(expression)使用filter1过滤后再使用filter2过滤...


带参数的Filter

Filter后面可以跟一个或多个参数,用来帮助实现特殊要求、需求的filter,需要遵循格式如下:
{{ expression | filter:argument1:argument2:... }}

自带的Filter

AngularJS为我们提供了9个内建的过滤器,分别是:
  • currency
  • Date
  • filter
  • json
  • limitTo
  • uppercase
  • lowercase
  • number
  • orderBy

1、currency货币格式化

{{12.21 | currency}}             //结果:$12.21
{{12.21 | currency:"¥"}}        //结果:¥12.21

2、Date日期格式化

    一. 本地日期格式化													
	1. {{ today | date:'medium' }}		//结果: May 20,2016 10:36:52 PM
	2. {{ today | date:'short' }}           //结果: 5/20/16 10:36 PM        
	3. {{ today | date:'fullDate' }}        //结果: Friday,May 20,2016    
	4. {{ today | date:'longDate' }}        //结果: May 20,2016            
	5. {{ today | date:'mediumDate' }}      //结果: May 20,2016            
	6. {{ today | date:'shortDate' }}       //结果: 5/20/16                 
	7. {{ today | date:'mediumTime' }}      //结果: 10:36:52 PM             
	8. {{ today | date:'shortTime' }}       //结果: 10:36 PM                
	二. 年月日时分秒毫秒
	{{today | date:'yyyy-MM-dd HH:mm:ss:sss EEEE'}}	 //结果:2016-05-20 22:43:52:592 Friday
	1. 年份格式
	'yyyy'/'yy'/'y' 返回的是:2016/16/2016	(四位年份/两位年份/一位年份)
	2. 月份格式
	'MMMM'/'MMM'/'MM'/'M' 返回的是:May/May/05/5    (英文月份/英文月份简写/两位数月份/一年中的第几个月)
	3. 日格式
	'dd'/'d'/'EEEE'/'EEE'  返回的是:20/20/Friday/Fri   (数字日期/一个月的第几天/英文星期/英文星期简写)
	4. 小时格式
	'HH'/'H'/'hh'/'h'	返回的是:22/22/10/10	(24小时制/24小时制第几小时/12小时制/12小时制第几小时)
	5. 分钟格式
	'mm'/'m' 返回的是:43/43	(数字分钟数/一个小时中的第几分钟)
	6.秒格式
	'ss'/'s' 返回的是:52/52	(数字秒数/一分钟中的第几秒)
	7. 毫秒数格:
	'sss'  返回的是:592	 (毫秒数)
	8. 字符格式
		上下午标识:{{ today | date:'a' }}	返回的是:PM
		四位时区标识:{{ today | date:'Z' }}	返回的是:+0800

3、filter查找

{{ [{"age": 38,"id": 24,"name": "Kobe Bryant"},{"age": 38,"id": 21,"name": "Tim Duncan"},{"age": 37,"id": 1,"name": "Tracy McGrady"}  
	] | filter:'n'}}    //查找含有有s的行  
  
//结果:[{"age":38,"id":24,"name":"Kobe Bryant"},{"age":38,"id":21,"name":"Tim Duncan"}] 
  
{{ [{"age": 38,"name": "Tracy McGrady"}  
	] | filter:{'name':'Kobe'} }}   //查找name含有Kobe的行  
   
 //结果:[{"age":38,"name":"Kobe Bryant"}]

4、json格式化

{{ {"age": 38,id: "24",name: "Kobe Bryant"} |json }}
结果:{ "age": 38,"id": "24","name": "Kobe Bryant" }

5、limitTo字符串对象的截取

{{"i love Tracy McGrady" | limitTo:6}}
{{"i love Tracy McGrady" | limitTo:-7}}
返回的结果分别是:
i love
McGrady

	{{ [{"age": 38,"name": "Tracy McGrady"}  
	] | limitTo:1 }}
结果:
[{"age":38,"name":"Kobe Bryant"}]

6、uppercase大写转换

{{"i love Tracy McGrady" | uppercase}}
结果:
I LOVE TRACY MCGRADY

7、lowercase小写转换

{{"i love Tracy McGrady" | lowercase}}
结果:
i love tracy mcgrady

8、number格式化

{{3.1415926 | number:2}}
{{5201314 | number}}
结果:
3.14
5,201,314

9、orderBy排序

	{{ [{"age": 38,"name": "Tracy McGrady"}  
	] | orderBy: 'id': true }}   //根据id降序排列

	{{ [{"age": 38,"name": "Tracy McGrady"}  
	] | orderBy: 'id' }}  //根据id升序排列

自定义Filter

格式大致如下:
app.filter('filter(过滤器)名称',function(){   
           return function(需要过滤的对象,过滤器参数1,过滤器参数2,...){       
                      //...执行业务逻辑代码        
                      return 处理后的对象;    
            }
}); 
内部返回的方法包含了多个参数,一个是输入的值,就是我们过滤器接受的值。后面的是过滤器参数,可以有多个。
例如:
<!DOCTYPE html>
<html ng-app="exampleApp">
<head>
	<Meta charset="utf-8">
    <title>AngularJS Demo</title>
    <link href="bootstrap.css" rel="stylesheet" />
    <link href="bootstrap-theme.css" rel="stylesheet" />
    <script src="angular.js"></script>
    <script>
        var myApp = angular.module("exampleApp",[]);
        myApp.controller("dayCtrl",function ($scope) {
            $scope.day = new Date().getDay();
        }); 
        myApp.filter("dayName",function () {
            var dayNames = ["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
            return function (input) {
                return angular.isNumber(input) ? dayNames[input] : input;
            };
        });
    </script>
</head>
<body> 
    <div class="panel">
        <div class="page-header">
            <h3>AngularJS App</h3>
        </div>
        <h4 ng-controller="dayCtrl">
            Today is {{day | dayName}}
        </h4>
    </div>
</body>
</html>
结果:

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...