AngularJS Filter过滤器详情

前端之家收集整理的这篇文章主要介绍了AngularJS Filter过滤器详情前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

前言

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

Filter作用

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

Filter使用方法

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

输出结果中应用Filters

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

带参数的Filter

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

自带的Filter

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

1、currency货币格式化

@H_404_21@{{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格式化

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

5、limitTo字符串对象的截取

@H_404_21@{{"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大写转换

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

7、lowercase小写转换

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

8、number格式化

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

9、orderBy排序

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

自定义Filter

格式大致如下:
@H_404_21@app.filter('filter(过滤器)名称',function(){ return function(需要过滤的对象,过滤器参数1,过滤器参数2,...){ //...执行业务逻辑代码 return 处理后的对象; } }); 内部返回的方法包含了多个参数,一个是输入的值,就是我们过滤器接受的值。后面的是过滤器参数,可以有多个。
例如:
@H_404_21@<!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相关文章