本节书摘来自华章出版社《AngularJS深度剖析与最佳实践》一书中的第2章,第2.7节,作者 雪狼 破狼 彭洪伟,更多章节内容可以访问云栖社区“华章计算机”公众号查看
2.7 过滤器
我们在第1章中使用了多个系统内置的过滤器(filter),还写了一个自定义过滤器,这里我们再系统化的从理论层面讲一下。
过滤器标准的定义方式是:
angular.module('com.ngnice.app').filter('myFilter', function(/* 这里可以用参数进行依赖注入 */) {
return function(input) {
var result;
// TODO: 把input变换成result
return result;
};
});
可以看出,过滤器是一个特殊的函数,它返回一个函数,这个函数接收的第一个参数就是被过滤的变量,如使用{{1|myFilter}}时,这个input参数的值就是1,当这个值是个变量时,它的变化会导致myFilter再次被执行。
过滤器还可以接收第二个参数,乃至第N个参数,如:
return function(input, arg1, arg2, arg3) {
...
};
而使用者则通过{{1|myFilter:2:3:4}}的形式调用它。这种情况下,arg1的值为2,arg2的值为3,arg3的值为4。
从使用者的角度,我们可以把filter看做一个函数,它负责接收输入,然后转换成输出。每当输入参数发生变化时,它就被执行,其输出会被视图使用。
filter除了可以用在绑定表达式之外,还可以用在指令中通过值绑定的属性,如
由于其简单灵巧,filter非常适合复用。官方提供的几个filter就有很多种用法,读者可以参照官方的API文档和实战篇的案例,自行尝试用ng-repeat, filter, orderBy的组合来实现具有前端过滤功能的表格,这有助于对过滤器的深入理解。