每天一个小知识点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;}}});
0 0
原创粉丝点击