angularjs filter 几种用法

angularjs filter 有3个参数,array,expression,comparator.
array即要过滤的数组列表。
expression 过滤的表达式,用于指定过滤的方式。exp 可以使用3种类型.
string : 数组对象里面所有字段只要能匹配这个字符串就表示通过。
object : 指明与数组对象中指定字段进行匹配。
例:

<!-- 两条都会匹配出来 -->
<ul ng-init="data = [{name : 'abc',lable : 'abc'},{name : 'bbb',lable : 'abc'}]">
<li ng-repeat="d in data|filter : 'a'">{{d}}</li>
</ul>
<!-- 只会匹配出第一条-->
<ul ng-init="data = [{name : 'abc',lable : 'abc'},{name : 'bbb',lable : 'abc'}]">
<li ng-repeat="d in data|filter : {name : 'a'}">{{d}}</li>
</ul>


function : 指定一个过滤函数,函数会传入item,以及index,返回一个boolean类型指明item是否需要过滤掉 true为保留,false为过滤掉

例:

$scope.fun = function(){
return function(item,i){
console.log(item);
return item.name.indexOf("a") > -1;
}
}


<ul ng-init="data = [{name : 'abc',lable : 'abc'},{name : 'bbb',lable : 'abc'}]">
<li ng-repeat="d in data|filter : fun()">{{d}}</li>
</ul>


使用function的时候有两点需要注意。fun函数的定义方式是返回一个新的函数。第二,在html里面使用fun函数时,要带括号及 filter:fun() 或 filter:fun(search) search为过滤值的变量


comparator 这个参数只有在exp的类型为string或object时才有效。这个参数接收两种类型的值。当它为boolean类型时,指明angular的过滤方式是否为严格过滤,既比较的值和item必须完全匹配,并且区分大小写。默认为false. 当它为function类型时,这个函数将覆盖angular的匹配方式,类似于重写java的equals. 这个函数会传入两个参数item和过滤值。

例:


<!-- 一个都匹配不出来 -->
<ul ng-init="data = [{name : 'abc',lable : 'a'},{name : 'bbb',lable : 'abc'},{name : 'abb',lable : 'abc'}]">
<li ng-repeat="d in data|filter :{name : 'a'}:true">{{d}}</li>
</ul>

<!-- 可以匹配第一个 -->
<ul ng-init="data = [{name : 'A',lable : 'a'},{name : 'abc',lable : 'abc'},{name : 'abb',lable : 'abc'}]">
<li ng-repeat="d in data|filter :{name : 'a'}:cmp">{{d}}</li>
</ul>



$scope.cmp = function(actual, expected){
//完全匹配,但不区分大小写
return actual.toLowerCase() == expected.toLowerCase();
}


注意:comparator参数如果是函数时不能带括号, 写法跟expression不一样。而且申明函数时跟expression也不一样,是直接申明一个函数,而不是返回一个新的函数。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值