每天一个小知识点15(Angularjs总结三)
来源:互联网 发布:怎么启用flash插件 mac 编辑:程序博客网 时间:2024/05/16 07:52
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;}}});
- 每天一个小知识点15(Angularjs总结三)
- 每天一个小知识点13(Angularjs总结一)
- 每天一个小知识点14(Angularjs总结二)
- 每天一个小知识点16(Angularjs总结四)
- 每天一个小知识点17(Angularjs总结五)
- 每天一个小知识点18(Angularjs总结六)
- 每天一个小知识点9(jQuer总结三)
- 每天一个小知识点12(jQueryMobile总结三)
- 每天一个小知识点2(sass总结)
- 每天一个小知识点5(闭包总结)
- 每天一个小知识点6(bootstrap总结)
- 每天一个小知识点7(jQuer总结一)
- 每天一个小知识点8(jQuer总结二)
- 每天一个小知识点10(jQuerMobile总结一)
- 每天一个小知识点11(jQuerMobile总结二)
- 每天一个小知识点22(cookie)
- 每天一个小知识点3(原型与构造函数总结一)
- 每天一个小知识点4(原型与构造函数总结二)
- OJ网站
- 我的登山鞋
- 2000 ASCII码排序
- 极简音乐播放器(一)
- 用VS2013编译FFMPEG232
- 每天一个小知识点15(Angularjs总结三)
- Factorial Trailing Zeroes
- ajax如果是json方式,接收页面echo出的变量一定要有json_encode()处理,html页面的返回函数success才能正常alert出这个变量
- เข้าพนันออนไลน์ sbobet ได้ราคามากสุด
- 音乐播放器实现功能之—
- poj 2686
- 线程与信号,线程与锁
- 使用Maven的插件测试
- Android之ListView异步加载网络图片(优化缓存机制)