AngularJS Filter过滤器详情
2016-05-20 22:08
344 查看
前言
这次系统学习了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,"id": 24,"name": "Kobe Bryant"}, {"age": 38,"id": 21,"name": "Tim Duncan"}, {"age": 37,"id": 1,"name": "Tracy McGrady"} ] | filter:{'name':'Kobe'} }} //查找name含有Kobe的行 //结果:[{"age":38,"id":24,"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,"id": 24,"name": "Kobe Bryant"}, {"age": 38,"id": 21,"name": "Tim Duncan"}, {"age": 37,"id": 1,"name": "Tracy McGrady"} ] | limitTo:1 }} 结果: [{"age":38,"id":24,"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,"id": 24,"name": "Kobe Bryant"}, {"age": 38,"id": 21,"name": "Tim Duncan"}, {"age": 37,"id": 1,"name": "Tracy McGrady"} ] | orderBy: 'id': true }} //根据id降序排列 {{ [{"age": 38,"id": 24,"name": "Kobe Bryant"}, {"age": 38,"id": 21,"name": "Tim Duncan"}, {"age": 37,"id": 1,"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>结果:
相关文章推荐
- jQuery plugin items filter
- 全国哀悼日网站页面变成灰色的filter方法
- 用css filter做鼠标滑过图片效果
- php 过滤器实现代码
- PHP过滤器的实现方法第1/2页
- ASP 使用Filter函数来检索数组的实现代码
- JavaScript 数组some()和filter()的用法及区别
- ASP.NET MVC:Filter和Action的执行介绍
- AngularJS基础教程之简单介绍
- jQuery可见性过滤器:hidden和:visibility用法实例
- jQuery使用contains过滤器实现精确匹配方法详解
- jQuery遍历DOM节点操作之filter()方法详解
- JQuery 选择器、过滤器介绍
- Avalon中文长字符截取、关键字符隐藏、自定义过滤器
- AngularJS中处理多个promise的方式
- JSP Filter的应用方法
- 详解JavaEE使用过滤器实现登录(用户自动登录 安全登录 取消自动登录黑用户禁止登录)
- 浅析JAVA中过滤器、监听器、拦截器的区别
- 传智播客java web 过滤器
- PHP中实现Bloom Filter算法