详解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 相关文章推荐
获取offsetTop和offsetLeft值的js代码(兼容)
Apr 16 Javascript
JQuery结合CSS操作打印样式的方法
Dec 24 Javascript
JS简单操作select和dropdownlist实例
Nov 26 Javascript
jQuery实现左右切换焦点图
Apr 03 Javascript
JavaScript中字符串分割函数split用法实例
Apr 07 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
Aug 19 Javascript
JS中的eval 为什么加括号
Apr 13 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
Jun 07 Javascript
DOM 事件的深入浅出(一)
Dec 05 Javascript
underscore之function_动力节点Java学院整理
Jul 11 Javascript
详解从vue-loader源码分析CSS Scoped的实现
Sep 23 Javascript
node crawler如何添加promise支持
Feb 01 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成功与否的代码
2013/08/16 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
2015/03/12 PHP
ThinkPHP打水印及设置水印位置的方法
2016/10/14 PHP
js/jQuery对象互转(快速操作dom元素)
2013/02/04 Javascript
JS实现两个大数(整数)相乘
2014/04/28 Javascript
nodejs开发环境配置与使用
2014/11/17 NodeJs
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
JavaScript实现图片滑动切换的代码示例分享
2016/03/06 Javascript
Angularjs中使用轮播图指令swiper
2017/05/30 Javascript
AngularJS实现表格的增删改查(仅限前端)
2017/07/04 Javascript
vue 实现复制内容到粘贴板clipboard的方法
2018/03/17 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
2018/08/08 Javascript
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
使用Vue父子组件通信实现todolist的功能示例代码
2019/04/11 Javascript
解决nuxt页面中mounted、created、watch执行两遍的问题
2020/11/05 Javascript
vue print.js打印支持Echarts图表操作
2020/11/13 Javascript
详解Python 2.6 升级至 Python 2.7 的实践心得
2017/04/27 Python
python学习笔记之列表(list)与元组(tuple)详解
2017/11/23 Python
利用python实现在微信群刷屏的方法
2019/02/21 Python
python2爬取百度贴吧指定关键字和图片代码实例
2019/08/14 Python
PyTorch使用cpu加载模型运算方式
2020/01/13 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
python的help函数如何使用
2020/06/11 Python
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
Java的基础面试题附答案
2016/01/10 面试题
大学生职业生涯规划书的基本内容
2014/01/06 职场文书
2014自荐信的写作技巧
2014/01/28 职场文书
户外亲子活动策划方案
2014/02/07 职场文书
小学生感恩演讲稿
2014/04/25 职场文书
文员转正自我鉴定怎么写
2014/09/29 职场文书
幼师大班个人总结
2015/02/13 职场文书
建筑工程挂靠协议书
2016/03/23 职场文书
详解JS数组方法
2021/11/20 Javascript
Python实现灰色关联分析与结果可视化的详细代码
2022/03/25 Python