首页 > 代码库 > angularjs培训之filter
angularjs培训之filter
在angularjs中,filter提供了格式化数据或者过滤数据的功能:
1、请看下面简单的例子
<div ng-controller="phoneListExtendController">
I have {{friends.length}} friends. They are:
<input type="search" ng-model="q" placeholder="filter friends..." />
<ul>
<li ng-repeat="friend in friends | filter:q">
[{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old.
</li>
</ul>
<hr>
<ul>
<li ng-repeat="name in names | filter : ‘j‘">
[{{$index + 1}}] is {{name}}.
</li>
total {{names.length}}
</ul>
</div>
controller定义在了controller2.js中,我们只用ng-repeat指令循环遍历friends,显示每个人的姓名和年龄,
这个不是我们今天介绍的重点,继续看:
我们通过管道方式使用filter ng-repeat="friend in friends | filter:q" ,并且filter绑定了一个model,
这个model是个input框,也就是说你输入的内容就是做为了ng-repeat的输入,遍历friends中的属性,判断是否包含
输入的字符。
效果如下:
2、也可以指定要过滤的字符串,代码如下:
<li ng-repeat="name in names | filter : ‘j‘">
[{{$index + 1}}] is {{name}}.
</li>
3、如果在controller中动态指定需要过滤的内容,修改代码如下:
<li ng-repeat="friend in friends | filter:q.name">
[{{$index + 1}}] {{friend.name}} who is {{friend.age}} years old.
</li>
另外还需要在controller中给$scope挂一个属性值,
$scope.q = {
name : ‘m‘
}
有上述的代码就可以实现动态过滤集合的功能。
4、自定义filter
当然内置的filter无法满足你所有的需求,这时你就可以搞了,想怎么搞就可以怎么搞了,你要你愿意。
通常我们可以使用module的filter方法来定义一个。如下:
module.filter(filterName,function(){
return function(input){
return ;
}
});
我们现在先实现一个用filter给字符串增加个!号,
先声明一个字符串 $scope.filters = ‘this is my first filter‘;
接下来我们来定义filter:
app.filter(‘myFilter‘,function(){
return function(input){
return input + "!";
}
});
说明: myFilter :filter名称
input : 定义的字符串的值。
下面就是显示内容了:
在标签中使用 {{filters | myFilter}}.
剩下来就交给你了,try it!
5、内置(build-in)filter:
currency,date,filter,json,limitTo,lowercase,number,orderBy,uppercase
这些用法都比较简单,不再附上例子了,详细的可以参考
http://docs.angularjs.cn/api/ng/filter
filter的先介绍到这里,有什么疑问或者想法,请留言!
本文出自 “Eason's hcc” 博客,请务必保留此出处http://hcc0926.blog.51cto.com/172833/1559668
angularjs培训之filter