AngularJS详解AngularJS中之filter过滤器用法

系统的学了一下angularjs,发现angularjs的小思想根php的模块smarty很像,例如数据绑定,filter。如果对smarty比较熟悉的话,学习angularjs会比较便于一点。这篇简单说一下angularjs底filter功能,angularjs的filter功能可分为二种,一种是坐的过滤器,一种植是于定义之。

 

同,内置的过滤器
1,uppercase,lowercase大小变换

 

1
2
{{ "lower cap string" | uppercase }}   //结果:LOWER CAP STRING
{{ "TANK is GOOD" | lowercase }}     //结果:tank is good

  
|这里的竖线是一样种植管道功能,如果对linux比较熟悉的话,这块的|根linux的管道功能,基本是平等的
2,json格式化

 

1
{{ {foo: "bar", baz: 23} | json }}  //结果:{ "foo": "bar", "baz": 23 }

在意:bza没格式前是无双引号的,格式化后即使转换成为了json数据了。
3,date格式化

 

1
2
3
{{ 1304375948024 | date }}             //结果:May 3, 2011
{{ 1304375948024 | date:"MM/dd/yyyy @ h:mma" }}   //结果:05/03/2011 @ 6:39AM
{{ 1304375948024 | date:"yyyy-MM-dd hh:mm:ss" }}  //结果:2011-05-03 06:39:08

4,number格式化

 

1
2
{{ 1.234567 | number:1 }}  //结果:1.2
{{ 1234567 | number }}    //结果:1,234,567

5,currency货币格式化

 

1
2
{{ 250 | currency }}         //结果:$250.00
{{ 250 | currency:"RMB ¥ " }}    //结果:RMB ¥ 250.00

6,filter查找

 

1
2
3
4
5
6
7
8
9
10
11
12
13
{{ [{"age": 20,"id": 10,"name": "iphone"},
{"age": 12,"id": 11,"name": "sunm xing"},
{"age": 44,"id": 12,"name": "test abc"}
] | filter:'s'}}  //查找含有有s的行
  
//上例结果:[{"age":12,"id":11,"name":"sunm xing"},{"age":44,"id":12,"name":"test abc"}]
  
{{ [{"age": 20,"id": 10,"name": "iphone"},
{"age": 12,"id": 11,"name": "sunm xing"},
{"age": 44,"id": 12,"name": "test abc"}
] | filter:{'name':'iphone'} }}  //查找name为iphone的行
  
//上例结果:[{"age":20,"id":10,"name":"iphone"}]

7,limitTo字符串,对诸如的截取

 

1
2
3
4
5
6
7
{{ "i love tank" | limitTo:6 }}      //结果:i love
{{ "i love tank" | limitTo:-4 }}     //结果:tank
  
{{ [{"age": 20,"id": 10,"name": "iphone"},
{"age": 12,"id": 11,"name": "sunm xing"},
{"age": 44,"id": 12,"name": "test abc"}
] | limitTo:1 }}   //结果:[{"age":20,"id":10,"name":"iphone"}]

8,orderBy对如排序

 

1
2
3
4
5
6
7
8
9
{{ [{"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' }}      //根据id升序排

二,自定filter功能 自摸了一个基本angularjs的mvc框架,phonecat,自定义filter也是于马上基础写的,这个框架挺好用底。
1,filters.js添加一个module

 

1
2
3
4
5
angular.module('tanktest', []).filter('tankreplace', function() {
  return function(input) {
    return input.replace(/tank/, "=====")
  };
});

2,app.js中加载是module

 

1
2
3
4
5
6
var phonecatApp = angular.module('phonecatApp', [
 'ngRoute',
 'phonecatControllers',
 'facebookControllers',
 'tanktest'
]);

3,html中调用

 

1
{{ "TANK is GOOD" | lowercase |tankreplace}}  //结果:===== is good

在意:| lowercase |tankreplace管道命令可以产生多单

其三、filter的有数栽采取方式
  1. 以模板被运用filter
  我们得以直接在{{}}中以filter,跟当表达式后面用 |
分割,语法如下:

 

1
{{ expression | filter }}

  也可基本上个filter连用,上一个filter的出口将当下一个filter的输入(怪不得就货长的跟管道一个样。。)

 

1
{{ expression | filter1 | filter2 | ... }}

  filter可以收起参数,参数用 : 进行剪切,如下:

 

1
{{ expression | filter:argument1:argument2:... }}

  除了对{{}}中的多寡开展格式化,我们尚好在命令中运用filter,例如先对数组array进行过滤处理,然后再度循环输出:

 

1
<span ng-repeat="a in array | filter ">

  2. 在controller和service中使用filter   我们的js代码中为可以用过滤器,方式尽管是咱们熟悉的仗注入,例如我只要当controller中运用currency过滤器,只待将它注入到该controller中即可,代码如下:

 

1
2
3
app.controller('testC',function($scope,currencyFilter){
  $scope.num = currencyFilter(123534);
}

  在模板被使用{{num}}就足以一直输出$123,534.00了!在劳动被采用filter也是同的道理。

  这您或许会见起困惑,如果自己只要在controller中采取多只filter,难道要一个一个注入吗,这怎么不极端为难了?小兄弟莫急~ng提供了一个$filter服务可来调用所欲的filter,你不过待注入一个$filter就够用了,使用方式如下:

 

1
2
3
4
app.controller('testC',function($scope,$filter){
  $scope.num = $filter('currency')(123534);
  $scope.date = $filter('date')(new Date());
}

  可以高达同等的功力。好处是若可以方便使用不同之filter了。

 

 

相关文章