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 相关文章推荐
理解Javascript_10_对象模型
Oct 16 Javascript
js正则表达式中test,exec,match方法的区别说明
Jan 29 Javascript
jquery实现表单验证简单实例演示
Nov 23 Javascript
jQuery随手笔记之常用的jQuery操作DOM事件
Nov 29 Javascript
完美JQuery图片切换效果的简单实现
Jul 21 Javascript
babel基本使用详解
Feb 17 Javascript
如何理解jQuery中的ajaxSubmit方法
Mar 13 Javascript
详谈js对url进行编码和解码(三种方式的区别)
Aug 16 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
Aug 14 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
Sep 28 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
Jan 27 Javascript
vue使用exif获取图片旋转,压缩的示例代码
Dec 11 Vue.js
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
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
php将字符串随机分割成不同长度数组的方法
2015/06/01 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
2017/02/04 PHP
YII框架批量插入数据的方法
2017/03/18 PHP
PHP实现微信退款功能
2018/10/02 PHP
script标签的 charset 属性使用说明
2010/12/04 Javascript
jQuery 对Select的操作备忘记录
2011/07/04 Javascript
下拉列表选择项的选中在不同浏览器中的兼容性问题探讨
2013/09/18 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
AngularJS动态生成div的ID源码解析
2016/08/29 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
2017/01/13 Javascript
详谈js中数组(array)和对象(object)的区别
2017/02/27 Javascript
JS匹配日期和时间的正则表达式示例
2017/05/12 Javascript
基于JavaScript实现抽奖系统
2018/01/16 Javascript
Vue父组件调用子组件事件方法
2018/02/23 Javascript
JS常见DOM节点操作示例【创建 ,插入,删除,复制,查找】
2018/05/14 Javascript
python实现划词翻译
2020/04/23 Python
详解python脚本自动生成需要文件实例代码
2017/02/04 Python
Python三级菜单的实例
2017/09/13 Python
django上传图片并生成缩略图方法示例
2017/12/11 Python
详解Python 重学requests发起请求的基本方式
2020/02/07 Python
HTML5实现页面切换激活的PageVisibility API使用初探
2016/05/13 HTML / CSS
施华洛世奇西班牙官网:SWAROVSKI西班牙
2019/06/06 全球购物
意大利折扣和优惠券网站:Groupalia
2019/10/09 全球购物
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
教师自我鉴定
2013/12/13 职场文书
扩大国家免疫规划实施方案
2014/03/21 职场文书
五一活动标语
2014/06/30 职场文书
2014单位领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
校园游戏活动新闻稿
2014/10/15 职场文书
项目备案申请报告
2015/05/15 职场文书
JS如何使用剪贴板操作Clipboard API
2021/05/17 Javascript
如何使用pdb进行Python调试
2021/06/30 Python
MYSQL 运算符总结
2021/11/11 MySQL