每天一个小知识点15(Angularjs总结三)



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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值