每天一个小知识点15(Angularjs总结三)
2015-07-27 19:26
706 查看
过滤器用来格式化需要展示给用户的数据。 AngularJS有很多实用的内置过滤器,同时也提供了方便的途径可以自己创建过滤器。
在HTML中的模板绑定符号 {{ }} 内通过 | 符号来调用过滤器
{{ expression | filter }}
案例1:自带过滤器,将名字转为大写
那如何在控制器中调用过滤器呢?
常见过滤器
date
{{ today | date:'medium' }}
案例:
日期格式化
年份格式化
月份格式化
日期格式化
小时格式化
分钟格式化
秒数格式化
只要满足规则我们也可以自己去定义日期格式化出来
常见过滤器2:
currency
快速格式化为一个货币格式
常见过滤器3:filter
filter过滤器可以从给定数组中选择一个子集,并将其生成一个新数组返回
例如,在做客户端搜索时,可以从一个数组中立刻过滤出所需的结果。
这个过滤器的第一个参数可以是字符串、对象或是一个用来从数组中选择元素的函数
1:字符串
返回所有包含这个字符串的元素。如果想返回不包含该字符串的元素,在参数前加!符号。
2:对象
AngularJS会将待过滤对象的属性同这个对象中的同名属性进行比较,如果属性值是字符串就会判断是否包含该字符串。如果希望对全部属性都进行对比,可以将$当作键名。
3:函数
对每个元素都执行这个函数,返回非假值的元素会出现在新的数组中并返回。
案例1:返回包含数组中所有包含e的单词
案例2:对对象做过滤
案例3:
json过滤
json过滤器可以将一个JSON或JavaScript对象转换成字符串
limitTo过滤器
limitTo过滤器会根据传入的参数生成一个新的数组或字符串,新的数组或字符串的长度取决于传入的参数,通过传入参数的正负值来控制从前面还是从后面开始截取。
案例1:
number过滤器
number过滤器将数字格式化成文本。它的第二个参数是可选的,用来控制小数点后截取的位数。
案例:
orderBy过滤器
orderBy过滤器可以用表达式对指定的数组进行排序。 orderBy可以接受两个参数,第一个是必需的,第二个是可选的。
第一个参数:
数组 重点掌握的一个 在排序表达式中使用数组元素作为谓词。对于与表达式结果并不严格相等的每个元素,则使用第一个谓词。
第二个参数:
用来控制排序的方向(是否逆向)。
案例1: //对象数组中的name进行排序
自定义过滤器
案例:这个过滤器是将类容中的第一个字母大写
注意:过滤器本质上是一个会把我们输入的内容当作参数传入进去的函数
案例2:编写一个过滤器,过滤出比10大的数字
Angularjs总结 三
过滤器过滤器用来格式化需要展示给用户的数据。 AngularJS有很多实用的内置过滤器,同时也提供了方便的途径可以自己创建过滤器。
在HTML中的模板绑定符号 {{ }} 内通过 | 符号来调用过滤器
{{ expression | filter }}
案例1:自带过滤器,将名字转为大写
<div ng-app="myApp"> <div ng-controller="myController"> {{name | uppercase}} </div> </div> <script type="text/javascript"> var app = angular.module('myApp', []); app.controller('myController', function($scope) { $scope.name="zhangsan" }); </script>
那如何在控制器中调用过滤器呢?
<div ng-app="myApp"> <div ng-controller="myController"> {{name}} </div> </div> <script type="text/javascript"> var app = angular.module('myApp', []); app.controller('myController',['$scope','$filter',function($scope,$filter){ //特别注意这里 $scope.name=$filter('uppercase')("lisi") //尝试一下$filter('lowercase')('LISI'); }]); </script>
常见过滤器
date
{{ today | date:'medium' }}
案例:
<div ng-app="myApp"> <div ng-controller="myController"> {{ today | date:'short' }} </div> </div> <script type="text/javascript"> var app = angular.module('myApp', []); app.controller('myController',['$scope',function($scope){ $scope.today=new Date(); }]); </script>
日期格式化
{{ 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:'hh:mm:ss.sss' }} <!-- 12:09:02.995 -->
常见过滤器2:
currency
<div ng-app="myApp"> <div ng-controller="myController"> {{ money | currency }} </div> </div> <script type="text/javascript"> var app = angular.module('myApp', []); app.controller('myController',function($scope){ $scope.money=1200; }); </script>
快速格式化为一个货币格式
常见过滤器3:filter
filter过滤器可以从给定数组中选择一个子集,并将其生成一个新数组返回
例如,在做客户端搜索时,可以从一个数组中立刻过滤出所需的结果。
这个过滤器的第一个参数可以是字符串、对象或是一个用来从数组中选择元素的函数
1:字符串
返回所有包含这个字符串的元素。如果想返回不包含该字符串的元素,在参数前加!符号。
2:对象
AngularJS会将待过滤对象的属性同这个对象中的同名属性进行比较,如果属性值是字符串就会判断是否包含该字符串。如果希望对全部属性都进行对比,可以将$当作键名。
3:函数
对每个元素都执行这个函数,返回非假值的元素会出现在新的数组中并返回。
案例1:返回包含数组中所有包含e的单词
<div ng-app="myApp"> <div ng-controller="myController"> {{ data | filter:'e' }} </div> </div> <script type="text/javascript"> var app = angular.module('myApp', []); app.controller('myController',function($scope){ $scope.data=['Ari','Lerner','Likes','To','Eat','Pizza'] }); </script>
案例2:对对象做过滤
<div ng-app="myApp"> <div ng-controller="myController"> {{ data | filter:{'favorite food':'烤鸭北京'} }} </div> </div> <script type="text/javascript"> var app = angular.module('myApp', []); app.controller('myController',function($scope){ $scope.data= [{ 'name': 'zhangsan', 'City': 'chengdu', 'favorite food': '火锅' },{ 'name': 'lisi', 'City': 'beijing', 'favorite food': '烤鸭北京' }] }); </script>
案例3:
<div ng-app="myApp"> <div ng-controller="myController"> {{ name | filter:checkText }} </div> </div> <script type="text/javascript"> var app = angular.module('myApp', []); app.controller('myController',function($scope){ $scope.name=['zhangsan','lisi','Wangwu','Hehe'] $scope.checkText = function(str) { return str[0] == str[0].toUpperCase(); }; }); </script>
json过滤
json过滤器可以将一个JSON或JavaScript对象转换成字符串
<div ng-app="myApp"> <div ng-controller="myController"> {{ name | json }} </div> </div> <script type="text/javascript"> var app = angular.module('myApp', []); app.controller('myController',function($scope){ $scope.name={'name': 'Ari', 'City': 'SanFrancisco'} }); </script>
limitTo过滤器
limitTo过滤器会根据传入的参数生成一个新的数组或字符串,新的数组或字符串的长度取决于传入的参数,通过传入参数的正负值来控制从前面还是从后面开始截取。
案例1:
<div ng-app="myApp"> <div ng-controller="myController"> {{ data | limitTo:3 }} //{{ data | limitTo:-3 }} </div> </div> <script type="text/javascript"> var app = angular.module('myApp', []); app.controller('myController',function($scope){ $scope.data="helloworld" }); </script>
number过滤器
number过滤器将数字格式化成文本。它的第二个参数是可选的,用来控制小数点后截取的位数。
案例:
<div ng-app="myApp"> <div ng-controller="myController"> {{ data | number }} //{{ data | number:2 }} </div> </div> <script type="text/javascript"> var app = angular.module('myApp', []); app.controller('myController',function($scope){ $scope.data="12345" // $scope.data="1.2345" }); </script>
orderBy过滤器
orderBy过滤器可以用表达式对指定的数组进行排序。 orderBy可以接受两个参数,第一个是必需的,第二个是可选的。
第一个参数:
数组 重点掌握的一个 在排序表达式中使用数组元素作为谓词。对于与表达式结果并不严格相等的每个元素,则使用第一个谓词。
第二个参数:
用来控制排序的方向(是否逆向)。
案例1: //对象数组中的name进行排序
<div ng-app="myApp"> <div ng-controller="myController"> {{ data | orderBy:'name' }} // {{ data | orderBy:'name':true }}--这样对排序的顺序反转 </div> </div> <script type="text/javascript"> var app = angular.module('myApp', []); app.controller('myController',function($scope){ $scope.data= [{ 'name': 'zhangsan', 'City': 'chengdu', 'favorite food': '火锅' },{ 'name': 'lisi', 'City': 'beijing', 'favorite food': '烤鸭北京' }] }); </script>
自定义过滤器
案例:这个过滤器是将类容中的第一个字母大写
注意:过滤器本质上是一个会把我们输入的内容当作参数传入进去的函数
<div ng-app="myApp.filters"> {{ 'helloworld' | lowercase | myFilter }} </div> <script type="text/javascript"> angular.module('myApp.filters', []) .filter("myFilter",function(){ return function(input){ if(input){ return input[0].toUpperCase()+input.slice(1) } } }) </script>
案例2:编写一个过滤器,过滤出比10大的数字
<div ng-app="myApp"> {{ 9 | myFilter }} </div> <script type="text/javascript"> var app = angular.module('myApp',[]); app.filter('myFilter',function () { return function(element){ if(element>10){ return element; } } });
相关文章推荐
- AngularJS学习笔记(四)
- 使用Spring Boot和Gradle创建AngularJS项目
- AngularJS 之 Factory vs Service vs Provider
- angularjs controller的两种写法
- AngularJS的一些基本样式初窥
- Angular简要概述一些概念
- AngularJS学习笔记
- angularJS directive自定义标签和属性
- AngulaJS实战总结, 带你进入AngularJS世界.
- 20个免费的 AngularJS 资源和开发教程
- zoj2773 Triangular Sums
- AngularJS的一些基本样式初窥
- angular 与video标签
- ionic 中使用 slidebox 利用angular ng-repeat 渲染后不显示问题
- 每天一个小知识点14(Angularjs总结二)
- AngularJS图片上传功能的实现
- angularJS学习笔记(二)
- angularJS学习笔记(二)
- Angular2 Use styles in Component
- angularjs——工具方法