详解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 相关文章推荐
Raphael带文本标签可拖动的图形实现代码
Feb 20 Javascript
a标签的href和onclick 的事件的区别介绍
Jul 26 Javascript
js 浏览本地文件夹系统示例代码
Oct 24 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
Mar 28 Javascript
js css 实现遮罩层覆盖其他页面元素附图
Sep 22 Javascript
node.js中的fs.chownSync方法使用说明
Dec 16 Javascript
老生常谈 js中this的指向
Jun 30 Javascript
jquery点击切换背景色的简单实例
Aug 25 Javascript
Angular项目从新建、打包到nginx部署全过程记录
Dec 09 Javascript
vue如何将v-for中的表格导出来
May 07 Javascript
node.js中stream流中可读流和可写流的实现与使用方法实例分析
Feb 13 Javascript
微信小程序实现多行文字滚动
Nov 18 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 array_merge下进行数组合并的代码
2008/07/22 PHP
PHP中mysqli_affected_rows作用行数返回值分析
2014/12/26 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
Iframe实现跨浏览器自适应高度解决方法
2014/09/02 Javascript
jQuery中width()方法用法实例
2014/12/24 Javascript
学习JavaScript设计模式(接口)
2015/11/26 Javascript
js获取本机操作系统类型的两种方法
2015/12/19 Javascript
JavaScript箭头(arrow)函数详解
2017/06/04 Javascript
Vue单文件组件基础模板小结
2017/08/10 Javascript
vue父组件中获取子组件中的数据(实例讲解)
2017/09/27 Javascript
vue中使用vue-router切换页面时滚动条自动滚动到顶部的方法
2017/11/28 Javascript
layui use 定义js外部引用函数的方法
2019/09/26 Javascript
js基础之事件捕获与冒泡原理
2019/10/09 Javascript
vue + node如何通过一个Txt文件批量生成MP3并压缩成Zip
2020/06/02 Javascript
vue 扩展现有组件的操作
2020/08/14 Javascript
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
Python使用flask框架操作sqlite3的两种方式
2018/01/31 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
2018/05/30 Python
对python3中pathlib库的Path类的使用详解
2018/10/14 Python
python 读写文件包含多种编码格式的解决方式
2019/12/20 Python
python3将变量写入SQL语句的实现方式
2020/03/02 Python
python字符串的index和find的区别详解
2020/06/20 Python
python中的对数log函数表示及用法
2020/12/09 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
Gucci法国官方网站:意大利奢侈品牌
2018/07/25 全球购物
UNOde50美国官网:西班牙珠宝品牌
2020/08/15 全球购物
电子商务专业学生职业生涯规划
2014/03/07 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
党风廉政承诺书
2014/03/27 职场文书
村干部培训班主持词
2014/03/28 职场文书
售房协议书
2014/08/19 职场文书
培训学校2015年度工作总结
2015/07/20 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
修改MySQL的默认密码的四种小方法
2021/05/26 MySQL
在Centos 8.0中安装Redis服务器的教程详解
2022/03/21 Redis