AngularJS 过滤与排序详解及实例代码

这篇文章主要介绍了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" />
 
  </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>
原文地址:https://www.cnblogs.com/liangxiaoli/p/7086332.html