引言自定义过滤器1 自定义没有属性的过滤器2 自定义有属性的过滤器3 自定义过滤器中使用服务
在上一篇博客中我们说了9个AngularJS
提供的过滤器,在真实开发环境中AngularJS
提供的9中过滤器远远不能满足我们的需求,在很多的时候我们需要自定义我们自己的过滤器,在本篇博客中我们就介绍一下如何创建我们自己的过滤器,然后如何在表达式中创建自己的过滤器,如何在过滤器服务中使用自己的过滤器。
在自定义过滤器之前,我们先看看一个AngularJS
提供的过滤器都有哪几部分组成,我们看{{ orderBy_exPRession | orderBy : expression : reverse}}
,分析这个过滤器大致可以分为三部分:
通过上面的分析,我们可以知道一个过滤器分为三个部分,属性是可选的,过滤器的名称是必须的,过滤器所处理的数据也是必须的,现在我们就自定义两个过滤器。
我们创建一个过滤器,所实现的功能:将hello js
替换成hello javascript
,过滤器的名称为myFilter
。
AngularJS
函数库(略)创建自定义的过滤器(myFilter
) //创建了一个过滤器 var app=angular.module("myApp",[]); app.filter('myFilter',function(){ return function(input){ //input为我们表达式的输出值,也就是hello js //这个函数的返回值就是过滤器的返回值 return input.replace(/js/, "Javascript"); } });在表达式中使用我们自定义的过滤器{{"hello js"|myFilter}}//输出结果为hello javascript 我们创建一个过滤器:过滤器的名称为myFilter
,过滤器可以填写一个属性,这个属性是boollen
类型,如果是true
,那么将hello js
替换成hello javascript
,如果false
,那么将hello js
替换成hello JAVASCRIPT
,接下来我们实现这个过滤器。
AngularJS
函数库(略)创建自定义的过滤器(myFilter
) var app=angular.module("myApp",[]); app.filter('myFilter',function(){ return function(input,attr){ //input为我们表达式的输出值,也就是hello js //attr是我们输入的属性值,如果可以输入两个属性,那么在函数中继续添加属性 //这个函数的返回值就是过滤器的返回值 if(attr){ return input.replace(/js/, "javascript"); }else{ return input.replace(/js/, "JAVASCRIPT"); } } });在表达式中使用我们的过滤器{{"hello js"|myFilter:true}}//输出结果为:hello javascript{{"hello js"|myFilter:false}}//输出结果为:hello JAVASCRIPT在创建我们的过滤器时,我们可以将服务注入进去,只要有供应商的服务都可以注入到过滤器方法中,现在我们就在自定义过滤器中使用服务,现在我们自定义一个自己的过滤器,实现的功能为:将字符串转换为大写:
创建过滤器 var app=angular.module("myApp",[]); app.filter('myLowercase',function($filter){ return function(input){ //input为我们表达式的输出值,也就是hello js //$filter就是注入进来的过滤器服务 return $filter("lowercase")(input); } });使用我们的表达式{{"HELLO JS"|myLowercase}}//运行结果为:hello js新闻热点
疑难解答