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


Posted in Javascript onSeptember 14, 2016

前面了解了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实现数据的绑定即可:

Search:<input ng-model="query">
      Sort by:<select ng-model="order">
        <option value="name">name</option>
        <option value="age">age</option>
      </select>

AngularJS是一门基于DOM的框架语言,因此不需要实现任何的监听器以及事件触发器,当query所在的输入框发生任何改变时,就会触发输入框与下面的表达式展现的双向刷新!

相比于其他的一些框架,是基于字符串通过DOM节点innerHTML添加到DOM中,AngularJS的实现方式加快了模型与视图的展现。并且减少了大量不必要的监听器啊触发器啊之类的代码的编写,真正实现了类似spring的效果~

数据的展现,可以通过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数组的初始化:   

<div ng-controller="ctl">
          ...
    </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>

  代码以及结果

最后贴上全部的代码:

<!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>

使用结果:

在默认情况下,使用age进行排序:

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

通过选择则可以使用name排序

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

再输入字符的时候,会自动过查询过滤掉一些选项

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

以上就是对AngularJS 过滤与排序的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

Javascript 相关文章推荐
IE的fireEvent方法概述及应用
Feb 22 Javascript
javascript使用正则获取url上的某个参数
Sep 04 Javascript
jQuery+jRange实现滑动选取数值范围特效
Mar 14 Javascript
使用OpenLayers3 添加地图鼠标右键菜单
Dec 29 Javascript
js实现对table的增加行和删除行的操作方法
Oct 13 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
Dec 20 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
Nov 11 Javascript
vue 开发一个按钮组件的示例代码
Mar 27 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
Aug 08 Javascript
JS实现简易留言板(节点操作)
Mar 16 Javascript
ng-alain的sf如何自定义部件的流程
Jun 12 Javascript
node koa2 ssr项目搭建的方法步骤
Dec 11 Javascript
AngularJS  自定义指令详解及实例代码
Sep 14 #Javascript
AngularJS 自定义过滤器详解及实例代码
Sep 14 #Javascript
AngularJS 中的Promise --- $q服务详解
Sep 14 #Javascript
AngularJS bootstrap启动详解及实例代码
Sep 14 #Javascript
AngularJS equal比较对象实例详解
Sep 14 #Javascript
AngularJS API之copy深拷贝详解及实例
Sep 14 #Javascript
AngularJS $injector 依赖注入详解
Sep 14 #Javascript
You might like
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
在任意字符集下正常显示网页的方法一
2007/04/01 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
2010/09/10 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
PHP获取当前所在目录位置的方法
2014/11/26 PHP
PHP微信API接口类
2016/08/22 PHP
php版微信公众平台实现预约提交后发送email的方法
2016/09/26 PHP
Yii框架用户登录session丢失问题解决方法
2017/01/07 PHP
PHP编程文件处理类SplFileObject和SplFileInfo用法实例分析
2017/07/22 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
浅谈php使用curl模拟多线程发送请求
2019/03/08 PHP
PHP常用函数之base64图片上传功能详解
2019/10/21 PHP
通过JAVAScript实现页面自适应
2007/01/19 Javascript
Microsoft Ajax Minifier 压缩javascript的方法
2010/03/05 Javascript
js中的referrer返回上一页使用介绍
2013/09/26 Javascript
JavaScript基础语法之js表达式
2016/06/07 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
基于Vue 2.0的模块化前端 UI 组件库小结
2017/12/21 Javascript
VUE前后端学习tab写法实例
2019/08/06 Javascript
解决vue admin element noCache设置无效的问题
2019/11/12 Javascript
JavaScript中window和document用法详解
2020/07/28 Javascript
[01:10]DOTA2次级职业联赛 - Fly战队宣传片
2014/12/01 DOTA
在GitHub Pages上使用Pelican搭建博客的教程
2015/04/25 Python
Python的re模块正则表达式操作
2016/05/25 Python
Flask框架模板继承实现方法分析
2019/07/31 Python
实现Python与STM32通信方式
2019/12/18 Python
python3 简单实现组合设计模式
2020/07/02 Python
Python reques接口测试框架实现代码
2020/07/28 Python
VSCODE配置Markdown及Markdown基础语法详解
2021/01/19 Python
Theflamel意大利:女士奢华服装、鞋子和配件
2020/01/11 全球购物
幼儿园教师节演讲稿
2014/09/03 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书
Golang中interface{}转为数组的操作
2021/04/30 Golang
解决golang 关于全局变量的坑
2021/05/06 Golang