详解AngularJS过滤器的使用


Posted in Javascript onMarch 11, 2016

AnularJS的过滤器用来格式化需要展示给用户的数据,有很多实用的内置过滤器,也可以自己编写。

在HTML中的模板绑定符号{{ }}内通过|符号来调用过滤器。例如,假设我们希望将字符串
转换成大写,可以对字符串中的每个字符都单独进行转换操作,也可以使用过滤器:

{{ name | uppercase }}
在JavaScript代码中可以通过$filter来调用过滤器。例如,在JavaScript代码中使用lowercase
过滤器:

app.controller('DemoController', ['$scope', '$filter',
function($scope, $filter) {
$scope.name = $filter('lowercase')('Ari');
}]);

以HTML的形式使用过滤器时,如果需要传递参数给过滤器,只要在过滤器名字后面加冒号
即可。如果有多个参数,可以在每个参数后面都加入冒号。例如,数值过滤器可以限制小数点后
的位数,在过滤器后写上:2可以将2作为参数传给过滤器:

<!-- 显示:123.46 -->
{{ 123.456789 | number:2 }}

1. currency
currecy过滤器可以将一个数值格式化为货币格式。用{{ 123 | currency }}来将123转化
成货币格式。
currecy过滤器允许我们自己设置货币符号。默认情况下会采用客户端所处区域的货币符号,
但是也可以自定义货币符号。
2. date
date过滤器可以将日期格式化成需要的格式。AngularJS中内置了几种日期格式,如果没有
指定使用任何格式,默认会采用mediumDate格式,下面的例子中展示了这个格式。
下面是内置的支持本地化的日期格式:

{{ today | date:'medium' }} <!-- Aug 09, 2013 12:09:02 PM -->
{{ today | date:'short' }} <!-- 8/9/1312:09PM -->
{{ today | date:'fullDate' }} <!-- Thursday, August 09, 2013 -->
{{ today | date:'longDate' }} <!-- August 09, 2013 -->
{{ today | date:'mediumDate' }}<!-- Aug 09, 2013 -->
{{ today | date:'shortDate' }} <!-- 8/9/13 -->
{{ today | date:'mediumTime' }}<!-- 12:09:02 PM -->
{{ today | date:'shortTime' }} <!-- 12:09 PM -->

年份格式化
四位年份:{{ today | date:'yyyy' }} <!-- 2013 -->
两位年份:{{ today | date:'yy' }} <!-- 13 -->
一位年份:{{ today | date:'y' }} <!-- 2013 -->
月份格式化
英文月份:{{ today | date:'MMMM' }} <!-- August -->
英文月份简写:{{ today | date:'MMM' }} <!-- Aug -->
数字月份:{{ today |date:'MM' }} <!-- 08 -->
一年中的第几个月份:{{ today |date:'M' }} <!-- 8 -->
日期格式化
数字日期:{{ today|date:'dd' }} <!-- 09 -->
一个月中的第几天:{{ today | date:'d' }} <!-- 9 -->
英文星期:{{ today | date:'EEEE' }} <!-- Thursday -->
英文星期简写:{{ today | date:'EEE' }} <!-- Thu -->
小时格式化
24小时制数字小时:{{today|date:'HH'}} <!--00-->
一天中的第几个小时:{{today|date:'H'}} <!--0-->
12小时制数字小时:{{today|date:'hh'}} <!--12-->
上午或下午的第几个小时:{{today|date:'h'}} <!--12-->
分钟格式化
数字分钟数:{{ today | date:'mm' }} <!-- 09 -->
一个小时中的第几分钟:{{ today | date:'m' }} <!-- 9 -->
秒数格式化
数字秒数:{{ today | date:'ss' }} <!-- 02 -->
一分钟内的第几秒:{{ today | date:'s' }} <!-- 2 -->
毫秒数:{{ today | date:'.sss' }} <!-- .995 -->
下面是一些自定义日期格式的示例:

{{ today | date:'MMMd, y' }} <!-- Aug9, 2013 -->
{{ today | date:'EEEE, d, M' }} <!-- Thursday, 9, 8-->
{{ today | date:'hh:mm:ss.sss' }} <!-- 12:09:02.995 -->

filter

filter过滤器可以从给定数组中选择一个子集,并将其生成一个新数组返回。

例如,用下面的过滤器可以选择所有包含字母e的单词:

{{ ['Ari','Lerner','Likes','To','Eat','Pizza'] | filter:'e' }}
<!-- ["Lerner","Likes","Eat"] -->

如果要过滤对象,可以使用上面提到的对象过滤器。例如,如果有一个由people对象组成的
数组,每个对象都含有他们最喜欢吃的食物的列表,那么可以用下面的形式进行过滤:

{{ [{
'name': 'Ari',
'City': 'San Francisco',
'favorite food': 'Pizza'
},{
'name': 'Nate',
'City': 'San Francisco',
'favorite food': 'indian food'
}] | filter:{'favorite food': 'Pizza'} }}
<!-- [{"name":"Ari","City":"SanFrancisco","favoritefood":"Pizza"}] -->

也可以用自定义函数进行过滤(在这个例子中函数定义在$scope上):

{{ ['Ari','likes','to','travel'] | filter:isCapitalized }}
<!-- ["Ari"] -->

isCapitalized函数的功能是根据首字母是否为大写返回true或false,具体如下所示:

$scope.isCapitalized = function(str) {
return str[0] == str[0].toUpperCase();
};

自定义过滤器

首先,创建一个模块用以在应用中进行引用

angular.module('myApp.filters', [])
.filter('capitalize', function() {
return function(input) {
// input是我们传入的字符串
if (input) {
return input[0].toUpperCase() + input.slice(1);
}
});

现在,如果想将一个句子的首字母转换成大写形式,可以用过滤器先将整个句子都转换成小
写,再把首字母转换成大写:

<!-- Ginger loves dog treats -->
{{ 'ginger loves dog treats' | lowercase | capitalize }}

以上就是AngularJS过滤器的使用方法,希望对大家的学习有所帮助。

Javascript 相关文章推荐
[原创]网络复制内容时常用的正则+editplus
Nov 30 Javascript
JavaScript CSS修改学习第二章 样式
Feb 19 Javascript
JavaScript中获取Radio被选中的值
Nov 11 Javascript
浅谈jquery的map()和each()方法
Jun 12 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
Jun 25 Javascript
BootStrap 动态添加验证项和取消验证项的实现方法
Sep 28 Javascript
vue.js 表格分页ajax 异步加载数据
Oct 18 Javascript
通过AngularJS实现图片上传及缩略图展示示例
Jan 03 Javascript
setTimeout时间设置为0详细解析
Mar 13 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
Mar 07 Javascript
Vue动态生成表格的行和列
Jul 18 Javascript
layui select 禁止点击的实现方法
Sep 05 Javascript
javascript html5 canvas实现可拖动省份的中国地图
Mar 11 #Javascript
js仿百度登录页实现拖动窗口效果
Mar 11 #Javascript
基于jQuery日历插件制作日历
Mar 11 #Javascript
jQuery Html控件基本操作(日常收集整理)
Mar 11 #Javascript
JavaScript获取客户端IP的方法(新方法)
Mar 11 #Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
Mar 11 #Javascript
JavaScript高级程序设计(第三版)学习笔记1~5章
Mar 11 #Javascript
You might like
Php部分常见问题总结
2006/10/09 PHP
Thinkphp5框架使用validate实现验证功能的方法
2019/08/27 PHP
js中escape对应的C#解码函数 UrlDecode
2012/12/16 Javascript
关于JavaScript的面向对象和继承有利新手学习
2013/01/11 Javascript
在JS数组特定索引处指定位置插入元素
2014/07/27 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
2015/03/04 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
2016/06/25 Javascript
JS 面向对象之继承---多种组合继承详解
2016/07/10 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
JavaScript 中 avalon绑定属性总结
2016/10/19 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
Bootstrap Table使用整理(三)
2017/06/09 Javascript
VueJs组件prop验证简单介绍
2017/09/12 Javascript
浅谈Koa服务限流方法实践
2017/10/23 Javascript
微信小程序使用request网络请求操作实例
2017/12/15 Javascript
vue bus全局事件中心简单Demo详解
2018/02/26 Javascript
js中的 || 与 &amp;&amp; 运算符详解
2018/05/24 Javascript
详解关于Angular4 ng-zorro使用过程中遇到的问题
2018/12/05 Javascript
微信小程序开发注意指南和优化实践(小结)
2019/06/21 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
微信小程序实现按字母排列选择城市功能
2019/11/25 Javascript
javascript设计模式 ? 原型模式原理与应用实例分析
2020/04/10 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
浅谈Python的list中的选取范围
2018/11/12 Python
python模糊图片过滤的方法
2018/12/14 Python
Python yield生成器和return对比代码实例
2020/04/20 Python
瑞士香水购物网站:Parfumcity.ch
2017/01/14 全球购物
保护动物的标语
2014/06/11 职场文书
申报材料格式
2014/12/30 职场文书
2015年度企业工作总结
2015/05/21 职场文书
开票证明
2015/06/23 职场文书
重阳节主题班会
2015/08/17 职场文书
学生检讨书范文
2019/06/24 职场文书
详解Redis实现限流的三种方式
2021/04/27 Redis
nginx配置之并发频次限制
2022/04/18 Servers
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers