在Angular中,过滤器的功能主要是格式化数据表达式,且可以自定义过滤器。作用域(scope)主要服务于页面模板,在控制器和页面中起桥梁作用,保存模板中的数据对象,为模板中的元素提供方法和属性。
过滤器的表现形式
在angular中有三种变现形式,通过管道字符 “ | ”,与需要处理的代码进行连接,看代码:
一,单个过滤器,如:{{表达式 | 过滤器名}}
货币过滤器 {{8.88 | currency}} // $8.88
二,多个过滤器,如:{{表达式 | 过滤器名1 | 过滤器名2 | ...}}
{{8.88 | currency | filter | ...}}
三,带参数过滤器,如:{{表达式 | 过滤器名1 : 参数1 : 参数2 : ...}}
{{8.88 | number : 1}}
angular中自带的九种过滤器
一,currency格式化数字为货币格式。
{{ 8.88 | currency }}// 默认为$8.88
{{ 8.88 | currency : "¥"}} // ¥8.88
二,lowercase过滤器将字符串格式化为小写
姓名为{{ lastName | lowercase }} // zhang $scope.lastName="ZHANG"
三,uppercase过滤器将字符串格式化为大写
{{ lastName | uppercase }} // ZHANG $scope.lastName="zhang"
四,orderBy过滤器根据表达式排列数组
// 根据id降序排序
{{[{"age":20,"id":10,"name":"iphone"},
{"age":12,"id":11,"name":"sunm xing"},
{"age":44,"id":12,"name":"test abc"}]
| orderBy:'id':true}}
// 根据id升序排序
{{[{"age":20,"id":10,"name":"iphone"},
{"age":12,"id":11,"name":"sunm xing"},
{"age":44,"id":12,"name":"test abc"}]
| orderBy:'id'}}
五,filter查找
// 查找name为iphone的行
{{[{"age":20,"id":10,"name":"iphone"},
{"age":12,"id":11,"name":"sunm xing"},
{"age":44,"id":12,"name":"test abc"}]
|filter:{'name':'iphone'}}}//输出的话就是{"age":20,"id":10,"name":"iphone"}
六,limitTo 截取
{{"1234567890"|limitTo:6}}// 从前面开始截取6位
{{"1234567890"|limitTo:-4}}// 从后面开始截取4位
七,date 时间格式化
{{1490161945000 | date:"yyyy-MM-dd HH:mm:ss" }}// 2017-03-22 13:52:25
八,number 格式化(保留小数)
{{149016.1945000|number:2}} //149016.19
九, json (格式化json对象)
json过滤器可以把一个js对象格式化为json字符串,没有参数。这东西有什么用呢,我一般也不会在页面上输出一个json串啊,官网说它 可以用来进行调试,嗯,是个不错的选择。或者,也可以用在js中使用,作用就和我们熟悉的JSON.stringify()一样。用法超级简单:
{{ jsonTest | json}}
angular自定义过滤器
方法:
app.filter('name', function() {
return function(input, char) {
return 自定义你的过滤器
}
}
app.filter('capitalize', function() {
//input 需要过滤的元素
//char位置,索引减一
return function(input, char) {
if(isNaN(input)) {
//如果序号位置没有设置,索引位置默认是0
var char = char - 1 || 0;
//把过滤元素索引位置上的字母转换成大写
var letter = input.charAt(char).toUpperCase();
var out = [];
for(var i = 0; i < input.length; i++) {
if(i == char) {
out.push(letter);
} else {
out.push(input[i]);
}
}
return out.join('');
} else {
return input;
}
}
});