过滤器 Filter
过滤器(filter)正如其名,作用就是吸收一个输入,经由过程某个划定规矩举行处置惩罚,然后返回处置惩罚后的结果。重要用在数据的花样化上。
过滤器通常是陪伴标记来运用的,将你model中的数据花样化为须要的花样。
表单的掌握功用重要涉及到数据考证以及表单控件的加强。关于表单控件会零丁模块做解说。
内置过滤器
先说angular自带的几种过滤器
1.currency (钱银处置惩罚)
运用currency能够将数字花样化为钱银,默许是美圆标记,你能够本身传入所需的标记,比方我传入人民币:
{{num | currency : '¥'}}
2.date (日期花样化)
原生的js对日期的花样化才能有限,angular供应的date过滤器基础能够满足平常的花样化请求。用法以下:
{{date | date : 'yyyy-MM-dd hh:mm:ss EEEE'}} date花样可设定
参数用来指定所要的花样, y年 M月 d日 h时 m分 s秒 E礼拜,你能够自由组合它们。也能够运用差别的个数来限定花样化的位数。
3.filter(婚配字符串)
这个filter用来处置惩罚一个数组,然后能够过滤出含有某个字符串的元素,作为一个子数组来返回。能够是字符串数组,也能够是对象数组。假如是对象数组,能够婚配属性的值。它吸收一个参数,用来定义过滤元素的婚配划定规矩。
例子以下:
$scope.demandArray = [
{name:'lmc',age:23},
{name:'lzx',age:24},
{name:'lxy',age:24},
{name:'lyj',age:26},
{name:'fll',age:25}
];
$scope.func = function(e){return e.age>24;};
{{ demandArray | filter : 'a' }} //婚配属性值中含有a的
{{ demandArray | filter : 4 }} //婚配属性值中含有4的
{{ demandArray | filter : {name : 'i'} }} //参数是对象,婚配name属性中含有i的
{{ demandArray | filter : func }} //参数是函数,指定返回age>4的
4.json(花样化json对象)
json过滤器能够把一个js对象花样化为json字符串,没有参数。这东西有什么用呢,我平常也不会在页面上输出一个json串啊,官网说它 能够用来举行调试,或许,也能够用在js中运用,作用就和我们熟习的JSON.stringify()一样。用法超等简朴:
{{ jsonTest | json}}
5.limitTo(限定数组长度或字符串长度)
limitTo过滤器用来截取数组或字符串,吸收一个参数用来指定截取的长度,假如参数是负值,则从数组尾部最先截取。注重这个filter只能从数组或字符串的开首/尾部举行截取。
用途不是很大。。完整能够用js来完成。
{{ childrenArray | limitTo : 2 }} //将会显现数组中的前两项
6.lowercase(小写)
把数据转化为悉数小写。没有参数,只能把全部字符串变成小写,不能指定字母。
7.uppercase(大写)
把数据转化为悉数大写。没有参数,只能把全部字符串变成小写,不能指定字母。8.number(花样化数字)
number过滤器能够为一个数字加上千位支解,像如许,123,456,789。同时吸收一个参数,能够指定float范例保存几位小数:
{{ num | number : 2 }}
9.orderBy(排序)
orderBy过滤器能够将一个数组中的元素举行排序,吸收一个参数来指定排序划定规矩,参数能够是一个字符串,示意以该属性称号举行排序。能够是 一个函数,定义排序属性。还能够是一个数组,示意顺次按数组中的属性值举行排序(若按第一项比较的值相称,再按第二项比较),照样拿上面的孩子数组举例:
<div>{{ demandArray | orderBy : 'age' }}</div> //按age属性值举行排序,如果-age,则倒序
<div>{{ demandArray | orderBy : orderFunc }}</div> //根据函数的返回值举行排序
<div>{{ demandArray | orderBy : ['age','name'] }}</div> //假如age雷同,根据name举行排序
自定义过滤器
filter的自定义体式格局也很简朴,运用module的filter要领,返回一个函数,该函数吸收
输入值,并返回处置惩罚后的结果。
下面看一个给数字加百分比的一个自定义filter:
angular.module("MetronicApp").filter("numberToRMB",["$filter",function($filter) {
return function (value) {
var filter = $filter("currency");
return filter(value,"¥");
}
}])
花样就是如许,你的处置惩罚逻辑就写在内部的谁人闭包函数中。你也能够让本身的过滤器吸收参数,参数就定义在return的谁人函数中,作为第二个参数,或许更多个参数也能够。
更多自定义filter会在项目中细致解说。
运用要领
1.在模板中运用filter
我们能够直接在{{}}中运用filter,跟在表达式背面用 | 支解,语法以下:
{{ expression | filter }}
也能够多个filter连用,上一个filter的输出将作为下一个filter的输入:
{{ expression | filter1 | filter2 | ... }}
filter能够吸收参数,参数用 : 举行支解,以下:
{{ expression | filter:argument1:argument2:... }}
除了对
{{}}
中的数据举行花样化,我们还能够在指令中运用filter,比方先对数组array举行过滤处置惩罚,然后再循环输出:
<span ng-repeat="a in array | filter ">
2.在controller和service中运用filter
我们的js代码中也能够运用过滤器,体式格局就是我们熟习的依靠注入,比方我要在controller中运用currency过滤器,只需将它注入到该controller中即可,代码以下:
app.controller('testC',function($scope,currencyFilter){
$scope.num = currencyFilter(123534);
}
在模板中运用{{num}}就能够直接输出$123,534.00了。
在效劳中运用filter也是一样的原理。
假如你要在controller中运用多个filter,并不须要一个一个注入,angular供应了一个$filter效劳能够来挪用所需的filter,你只需注入一个$filter就够了,运用要领以下:
app.controller('testC',function($scope,$filter){
$scope.num = $filter('currency')(123534);
$scope.date = $filter('date')(new Date());
}
能够到达一样的结果。优点是你能够方便运用差别的filter了。
项目中会对运用到的filter做细致解说。