这篇文章主要介绍了AngularJS 过滤与排序,实现查询过滤以及排序的功能。
通过这篇文章可以了解到
1、 angularjs的过滤器
2、 ng-repeat的使用方法
3、 控制器的使用
4、 数据的绑定
首先,如果要是先查询过滤,就要使用到AngularJS中的 过滤器filter 了。
直接在表达式的后面使用管道命令符 | ,按照下面的写法就可以达到一个过滤的效果:
{{ persons | filter:query }}
通过使用filter实现过滤操作,query是查询过滤时输入的字符串。
类似地,使用orderBy就可以实现排序的功能:
{{ persons | filter:query | orderBy:order }}
上面的查询以及排序涉及到两个变量,query和order。在这里直接使用ng-model实现数据的绑定即可:
搜索:<input ng-model=
"query"
>
排序:<select ng-model=
"order"
>
<option value=
"name"
>name</option>
<option value=
"age"
>age</option>
</select>
数据的展现,可以通过ng-repeat实现。当网页解析到ng-repeat的时候,会为每一个数组中的元素都克隆一份标签,进行编译解析。
<ul class=
"persons"
>
<li ng-repeat=
"person in persons | filter:query | orderBy:order"
>
{{person.name}}
{{person.age}}
</li>
</ul>
这些就是需要在script中进行perons数组的初始化:
<script type=
"text/javascript"
>
function
ctl($scope){
$scope.persons = [
{
"name"
:
"xingoo"
,
"age"
:25},
{
"name"
:
"zhangsan"
,
"age"
:18},
{
"name"
:
"lisi"
,
"age"
:20},
{
"name"
:
"wangwu"
,
"age"
:30}
];
$scope.order =
"age"
;
}
</script>
实例:
<!doctype html>
<html ng-app>
<head>
<meta http-equiv=
"Content-Type"
content=
"text/html; charset=utf-8"
/>
<script src=
"http://apps.bdimg.com/libs/angular.js/1.2.16/angular.min.js"
></script>
</head>
<body>
<div ng-controller=
"ctl"
>
Search:<input ng-model=
"query"
>
Sort by:<select ng-model=
"order"
>
<option value=
"name"
>name</option>
<option value=
"age"
>age</option>
</select>
<ul class=
"persons"
>
<li ng-repeat=
"person in persons | filter:query | orderBy:order"
>
{{person.name}}
{{person.age}}
</li>
</ul>
</div>
<script type=
"text/javascript"
>
function
ctl($scope){
$scope.persons = [
{
"name"
:
"xingoo"
,
"age"
:25},
{
"name"
:
"zhangsan"
,
"age"
:18},
{
"name"
:
"lisi"
,
"age"
:20},
{
"name"
:
"wangwu"
,
"age"
:30}
];
$scope.order =
"age"
;
}
</script>
</body>
</html>