发表于: 2017-05-30 23:25:49

1 949


今天完成的事:

过滤器:

过滤器(filter)正如其名,作用就是接收一个输入,通过某个规则进行处理,然后返回处理后的结果。主要用在数据的格式化上,例如获取一个数组中的子集,对数组中的元素进行排序等。ng内置了一些过滤器,它们是:currency(货币)、date(日期)、filter(子串匹配)、json(格式化json对象)、limitTo(限制个数)、lowercase(小写)、uppercase(大写)、number(数字)、orderBy(排序)。总共九种。除此之外还可以自定义过滤器,这个就强大了,可以满足任何要求的数据处理。


1,filter的使用方法:

a. 在模板中使用filter:

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

b. 在controller和service中使用filter

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


2,ng的内置过滤器

a. currency (货币处理)

{{num | currency : ''}}

b. date (日期格式化)

{{date | date : 'yyyy-MM-dd hh:mm:ss EEEE'}}

c.filter(匹配子串)

$scope.childrenArray = [
   {name:'kimi',age:3},
{name:'cindy',age:4},
{name:'anglar',age:4},
{name:'shitou',age:6},
{name:'tiantian',age:5}
];
$scope.func = function(e){return e.age>4;}

{{ childrenArray | filter : 'a' }} //匹配属性值中含有a
{{ childrenArray | filter : 4 }}  //匹配属性值中含有4
{{ childrenArray | filter : {name : 'i'} }} //参数是对象,匹配name属性中含有i
{{childrenArray | filter : func }}  //参数是函数,指定返回age>4

d limitTo(限制数组长度或字符串长度)

{{ childrenArray | limitTo : 2 }}  //将会显示数组中的前两项

e. number(格式化数字)

{{ num | number : 2 }}//指定float类型保留几位小数

f. orderBy(排序)

<div>{{ childrenArray | orderBy : 'age' }}</div>      //age属性值进行排序,若是-age,则倒序
<div>{{ childrenArray | orderBy : orderFunc }}</div>   //按照函数的返回值进行排序
<div>{{ childrenArray | orderBy : ['age','name'] }}</div>  //如果age相同,按照name进行排序


3.自定义过滤器

app.filter('odditems',function(){
   return function(inputArray){
       var array = [];
       for(var i=0;i<inputArray.length;i++){
           if(i%2!==0){
               array.push(inputArray[i]);
           }
       }
       return array;
   }
});

格式就是这样,你的处理逻辑就写在内部的那个闭包函数中。你也可以让自己的过滤器接收参数,参数就定义在return的那个函数中,作为第二个参数,或者更多个参数也可以。


明天计划的事:

完成ng-router


遇到的问题:

暂无


收获:

如上


返回列表 返回列表
评论

    分享到