详解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 相关文章推荐
JS中处理与当前时间间隔的函数代码
May 23 Javascript
JS中的log对象获取以及debug的写法介绍
Mar 03 Javascript
jQuery中andSelf()方法用法实例
Jan 08 Javascript
js实现网页收藏功能
Dec 17 Javascript
Highcharts 多个Y轴动态刷新数据的实现代码
May 28 Javascript
ES6新数据结构Map功能与用法示例
Mar 31 Javascript
bootstrap Table插件使用demo
Aug 07 Javascript
react-native中ListView组件点击跳转的方法示例
Sep 30 Javascript
swiper 解决动态加载数据滑动失效的问题
Feb 26 Javascript
利用vue.js把静态json绑定bootstrap的table方法
Aug 28 Javascript
JS中的防抖与节流及作用详解
Apr 01 Javascript
AJAX实现指定部分页面刷新效果
Oct 16 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生成月历代码
2007/06/14 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
2014/06/12 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
Javascript 篱式条件判断
2008/08/22 Javascript
网络图片延迟加载实现代码 超越jquery控件
2010/03/27 Javascript
js 小数取整的函数
2010/05/10 Javascript
JS中捕获console.log()输出的方法
2015/04/16 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
2015/11/04 Javascript
js中substring和substr两者区别和使用方法
2015/11/09 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
浅谈Angular.js中使用$watch监听模型变化
2017/01/10 Javascript
浅谈mvvm-simple双向绑定简单实现
2018/04/18 Javascript
详解package.json版本号规则
2019/08/01 Javascript
手把手15分钟搭一个企业级脚手架
2019/09/16 Javascript
JavaScript如何判断input数据类型
2020/02/06 Javascript
Element Dropdown下拉菜单的使用方法
2020/07/26 Javascript
vue使用echarts图表自适应的几种解决方案
2020/12/04 Vue.js
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
Python批量查询关键词微信指数实例方法
2019/06/27 Python
python opencv 检测移动物体并截图保存实例
2020/03/10 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
python3中for循环踩过的坑记录
2020/12/14 Python
伦敦新晋轻奢耳饰潮牌:Tada & Toy
2020/05/25 全球购物
J2EE相关知识面试题
2013/08/26 面试题
大学活动总结模板
2014/07/10 职场文书
公司承诺书格式范文
2015/04/28 职场文书
中国文明网2015年“向国旗敬礼”活动网上签名寄语
2015/09/24 职场文书
中学教代会开幕词
2016/03/04 职场文书
PHP使用非对称加密算法RSA
2021/04/21 PHP