详解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计算页面执行时间的函数
Dec 07 Javascript
学习jquery之一
Apr 27 Javascript
javascript 表单规则集合对象
Jul 21 Javascript
javascript中检测变量的类型的代码
Dec 28 Javascript
js自动下载文件到本地的实现代码
Apr 28 Javascript
js判断游览器类型及版本号的代码
May 11 Javascript
利用JS实现数字增长
Jul 28 Javascript
Yarn的安装与使用详细介绍
Oct 25 Javascript
Angularjs 实现动态添加控件功能
May 25 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
Jun 02 Javascript
完美解决通过IP地址访问VUE项目的问题
Jul 18 Javascript
Vue环境搭建+VSCode+Win10的详细教程
Aug 19 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为什么选mysql作为数据库? Mysql 创建用户方法
2007/07/02 PHP
PHP array 的加法操作代码
2010/07/24 PHP
PHP实现抓取HTTPS内容
2014/12/01 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
PHP未登录自动跳转到登录页面
2016/12/21 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
QQ登录简单实现代码
2021/03/09 Javascript
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
JQuery动画和停止动画实例代码
2013/03/01 Javascript
JS继承--原型链继承和类式继承
2013/04/08 Javascript
javascript和jquery修改a标签的href属性
2013/12/16 Javascript
JavaScript四种调用模式和this示例介绍
2014/01/02 Javascript
javascript中验证大写字母、数字和中文
2014/01/15 Javascript
两种不同的方法实现js对checkbox进行全选和反选
2014/05/13 Javascript
Windows 系统下安装和部署Egret的开发环境
2014/07/31 Javascript
jQuery选择id属性带有点符号元素的方法
2015/03/17 Javascript
JavaScript简单下拉菜单实例代码
2015/09/07 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
jquery编写Tab选项卡滚动导航切换特效
2020/07/17 Javascript
详解Layer弹出层样式
2017/08/21 Javascript
jQuery实现的回车触发按钮事件功能示例
2018/03/25 jQuery
微信小程序实现手指触摸画板
2018/07/09 Javascript
在vue项目中引入高德地图及其UI组件的方法
2018/09/04 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
npm ci命令的基本使用方法
2020/09/20 Javascript
Javascript表单序列化原理及实现代码详解
2020/10/30 Javascript
对python中Librosa的mfcc步骤详解
2019/01/09 Python
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
Html5新特性用canvas标签画多条直线附效果截图
2014/06/30 HTML / CSS
HTML5声音录制/播放功能的实现代码
2018/05/03 HTML / CSS
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
小学生个人先进事迹材料
2014/05/08 职场文书
教师学期末个人总结
2015/02/13 职场文书
实习生个人总结范文
2015/02/28 职场文书
表扬信范文
2015/05/04 职场文书
mysql数据库实现设置字段长度
2022/06/10 MySQL